ฉันกำลังพยายามหาวิธีล้างตัวแปร POST และ GET ทั้งหมดอย่างมีประสิทธิภาพด้วยฟังก์ชันเดียว นี่คือฟังก์ชันของตัวเอง:
//clean the user's input
function cleanInput($value, $link = '')
{
//if the variable is an array, recurse into it
if(is_array($value))
{
//for each element in the array...
foreach($value as $key => $val)
{
//...clean the content of each variable in the array
$value[$key] = cleanInput($val);
}
//return clean array
return $value;
}
else
{
return mysql_real_escape_string(strip_tags(trim($value)), $link);
}
}
และนี่คือรหัสที่จะเรียกมันว่า:
//This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
$_POST[$key] = cleanInput($value, $link);
}
//This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
$_GET[$key] = cleanInput($value, $link);
}
สำหรับฉันดูเหมือนว่ามันควรจะได้ผล แต่ด้วยเหตุผลบางอย่าง มันจะไม่ส่งคืนอาร์เรย์จากช่องทำเครื่องหมายบางช่องที่ฉันมีในแบบฟอร์ม พวกเขาออกมาว่างเปล่า
ฉันได้ทดสอบโค้ดของฉันโดยไม่มีฟังก์ชันข้างต้นและใช้งานได้ดี ฉันแค่ต้องการความปลอดภัยเพิ่มเติมเล็กน้อยในนั้น
ขอบคุณ!