繁体   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