[PHP] Database'e Veri Atma Sorunu
-
Selam hocalar,
şimdi MySQL database imin dili (belki bununla alakası vardır diye yazıyorum) utf_8_turkish_ci, database imde ürünler bulunuyor. Bir admin panelinden bu ürünlere ekleme silme ve güncelleme yapıyorum. Herşey gayet güzel çalışıyor. Fakat ekleme ve güncelleme bölümünde "6'lı Mini Paket" ibaresi kullanıldığında database e ekleme ya da güncelleme başarısız oluyor. Sebebi ne olabilir ?
-
Koruma tarzı kod, waf falan birşeyler var mı? Muhtemelen tırnaktan dolayı yapıyor. (')
$str = trim(preg_replace('/\s*\([^)]*\)/', '', $str));ZINDIK tarafından 05/Mar/13 22:27 tarihinde düzenlenmiştir -
' "" engellemiştir
sahinka tarafından 05/Mar/13 22:14 tarihinde düzenlenmiştir -
' bu ifadeden kaynaklanıyor hocam,
Bunu temizletmen gerekiyor, yok temizlemeyedebilirsin ancak önüne ters bölü işareti koymalısın,
Birde verii tabanına bilgiyi eklerken
$urunadi = mysql_real_escape_string($_POST["urunadi"]);
mysql_query("insert into asd `urunadi` values ('".$urunadi."')");
Böyle eklemeyi dene, ama eklemeye çalıştığın ' bu ifade yukarıda bulunan sorguya eklendiğinde hata verdirtir.
mysql_real_escape_string( ); di o fonksiyon sanırım.
yada direk kendinde yazabilirsin
eregi replace gibi php nin hazır fonksiyonları ile
Olmadı
addslashes(); ile korut, eklerken çekerkende bunun tam tesi ile stripslashes di sanırım çekersen bi sorun kalmaz...
-
addslashes(); işimi görücek sanırım teşekkür ediyorum hocalar
-
mysql_query('insert into tabloadin(baslik,icerik)values("'.$baslik.'","'.$icerik.'")'); şeklindedir seninki ondan.
mysql_query("insert into tabloadin(baslik,icerik)values('".$baslik."','".$icerik."')");
yap.
-
$title= $_POST['title'];
dan sonra
$title =addslashed($title);
yaptıktan sonra database e ekleyince sıkıntı kalmadı, teşekkür ediyorum tekrar :)
-
manyaki bunu yazdı
$title= $_POST['title'];
dan sonra
$title =addslashed($title);
yaptıktan sonra database e ekleyince sıkıntı kalmadı, teşekkür ediyorum tekrar :)
Bunu db den çekip tekrar ekrana bastırıken de
\' gibi gelecektir onuda tam tersi fonsiyonla ortadan kaldırabilirsin.
Kolay gelsin
-
addslash ile hiç uğraşmasana direk filter_input ile al, sanitize_string ile filtrele.
-
addslashes yada mysql_real_escape_string işini fazlasıyla görecektir.
Aman hocam dikkat et bunlar güvenliktir. Bir araştır derim.
-
mysql_ ile başlayan işlevlerin yerine mysqli daha iyisi PDO kullanın. Parametreli sorgular yazmaya alışın (mysql_ destek vermez). Sırasıyla ' " sekme, alt satır, ? ... gibi karakterler özel olduğundan veritabanına girerken eskeyp etmelisiniz (escape).
