簡體   English   中英

使用is_numeric進行表單驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM