Salamlar. Mən mysql bazaya göndərilən mətni filtrasiyadan keçirmək üçün aşağıdakı funksiyanı qurmuşam. Sizcə hansısa bir əlavəni etməliyəm ya yaxşıdi? birdə ki nl2br() funksiyasini mətni bazaya göndərməmişdən ya bazadan çixaranda tətbiq etsəm daha yaxşı olar?
public static function filtr($emin) { $emin = htmlentities($emin, ENT_QUOTES, 'UTF-8'); $emin = trim(nl2br($emin)); $emin = str_replace('$', '$', $emin); $emin = str_replace('%', '%', $emin); $emin = str_replace('`', '`', $emin); $emin = str_replace('\\', '\', $emin); $emin = mysql_real_escape_string($emin); return $emin; }
Verilmiş cavablar və yazılan şərhlər (10 cavab var)
1
Salam. İlk öncə istərdim məqsəd barədə məlumat verəsiniz. Siz niyə mətnin başına bu qədər oyun açırsınız? 🙂 Əgər sırf təhlükəsizlik üçündürsə, artıqdır burdakıların çoxu. Cavabı verin, davamını ona uyğun yazaram.
0
He qardasim, tehlukesizlik ucun filtrasiya etmek isteyirem.
1
Təhlükəsizlik üçün edirsinizsə gərək yoxdur bu qədər işləmlərə.
mysql_real_escape_string inyeksiyaya qarşı kifayət edir. Mətn html sahədə çıxacaqsa htmlentities də bəs edir. mysqlrealescapestring olandan sonra backslash forwardslash-ın, dırnaq işarələrinin qorxusu yoxdur.
nl2br bazada olmasa da olar, yaddaşa da bir az qənaət etmiş olarsınız.
biraz mivzudan uzaq sual verecem mene cox maraqli grldi. niue funksiyanin adi emin di ?:))
birde bele qarma qariwiq filtrasyadan rus chatlarinda ruslar istifade edir guya sql injeksiyanin qabagini almaq uchun.. siz Elvinin sualina cvb vermediz.. meqsed nedir bu filtrda ? chatda yazilanlarin bazaya elavesidi ?
p.s. herflere gore uzurlu heaab edin telden yaziram
0
Men bu filtrasiya ile butun bazaya geden melumatlari kecirmey ucun isteyirem. birde ki tekce mysql_real_escape_string qoyanda her hansi bir metnde ” isaresi varsa o bele \” gorunur. arxasinda slash. ama men isteyirem ki nece yazilibsa elede gorunsun
0
Ruslan, diqqetle baxsan funksiyanin adinin Emin yox filtr oldugunu gorersen. funksiyanin istifade meqsedi ise yazdigim xeber scriptinde xeberin metnini basligini ve diger mysql ile elaqeli sorgulari filtrden kecirtmek
1
Bir balaca məsləhət:
O qədər str_replace işlətməyə ehtiyac yoxdur. Belə et :
$axtar = array(‘|’, ‘”‘, ‘\”, ‘$’, ‘\\’, ‘^’, ‘%’, ‘`’, “”, “\x00”, “\x1A”);
$deyis = array(‘|’, ‘"’, ‘'’, ‘$’, ‘\’, ‘^’, ‘%’, ‘`’, ”, ”, ”);
$emin = str_replace($axtar, $deyis, $emin);
heee emindeyisen imis ))) ..
deyisenin emin olmagi da maraqlidi )) neyse
eger xeberi ozun ve ya moderatorlar elave edecekse mysql real escape string bes eder Elvin dediyi kimi ..
0
Moder ve ya ozum elave etsemde ” isaresi \” bele dusur axi.
2
Bu yoxlamanı sil funksiyadan
$emin = htmlentities($emin, ENT_QUOTES, ‘UTF-8’);
Bunu oxuyanda tətbiq edərsən. işarələr də ona görə çıxır.
Sual verin
Cavab verin