[英]Using is_numeric for form validation
我有一些結構如下......
http://domain.com?problem_id=23&course_id=4
GET“fields”(problem_id和course_id)的期望值是整數。 我可以簡單地說......來驗證這些數據嗎?
if (is_numeric($_GET['problem_id'])){
//It's safe, so do stuff.
} else {
echo 'It appears you submitted a problem incorrectly. Please contact us for assistance';
exit;
}
或者這仍然像sql注入等那樣骯臟嗎?
建議的解決方案
$int_problem_id = (int) $_GET['problem_id'];
if (ctype_digit($int_problem_id)){
//It's safe, so do stuff.
} else {
echo 'It appears you submitted a problem incorrectly. Please contact us for assistance';
exit;
}
是的,這是一個解決方案。 此外,您還可以轉換為int。
$integer = (int) $_GET['problem_id'] ;
您應該保護數據庫的所有輸入,即使數值不會造成任何損害,因為它們不包含特殊符號。
您可以確保?problem_id=
是數字。 您的所有其他字段可能仍然存在風險,因此這不是防止SQL注入的正確方法。 您應該查看PDO和MySQLi及其bindParam / bind_params函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.