Bu soru burada zaten bir cevabı var:
- How can I prevent SQL injection in PHP? 29 answers
Bu soru burada zaten bir cevabı var:
Ayrıca array_map kullanabilirsiniz
$_POST = array_map('mysql_real_escape_string',$_POST);
Bu işi yapmak için daha iyi bir yolu var mı?
Kesinlikle: parameterised queries.
Onlar PHP biraz söz konum, ve onlar gerektiren bu yana ne yazık ki yerine ait, mysqli
(veya özelliği sağlar bazı diğer veri erişim katmanı ve veritabanı bağımsızlığı gibi belki diğerleri) geçmek için Eski mysql_
fonksiyonları bazı yeniden yazımı olması gerekir. Ama SQL dize literal uygulamanızın dışarı kaçan ve ait veri erişim katmanı koyarak alarak büyük bir gelişme var.
Hayır, bu en iyi yoldur. Yanıtlanıyor gibi this old question, her zaman dil / sistem sizin için uygun olan her türlü araçları kullanmak gerekir.
Ancak, sorun hala sıkıcı olma konusunda kalır. Ben bir döngü öneririm. Lütfen değişkenler olduğu varsayıldığında $_POST
:
$vars = array("foo", "bar", "baz"); // names of variables
foreach ($vars as $var) {
// tricky $$ usage will create the variables
// $foo, $bar, etc., with the escaped values.
${$var} = mysql_real_escape_string($_POST[$var]);
// you could also store an array of inputs, like $inputs[$var] = ...;
}
Ben DBO yoluyla hazırlanmış sorguları tercih ederim .. ama burada bir seçenek
function recursive_escape($arrayin) {
if (is_array($arrayin)){
foreach($arrayin as $key=>$value){
if (is_array($value)){
foreach($value as $key2=>$value2){
$escapedArray[$key][$key2] = mysql_real_escape_string($value2);
}
} else {
$escapedArray[$key] = mysql_real_escape_string($value);
}
}
} else {
//nothing done
$escapedArray = $arrayin;
}
if(!isset($escapedArray)) {
$escapedArray = Array ( );
}
return $escapedArray;
}