PHP中的输入过滤

4

我正在以这种方式过滤用户输入

$id= intval($_REQUEST['id']);

我只接受整数在$id中。

还有什么我可以使用来使其更加安全?

谢谢!


你接下来要用这个“id”做什么?将其放入数据库中吗? - rzetterberg
1
请注意,$_REQUEST$_GET$_POST$_COOKIE 的联合体。你无法确定该值的来源。 - Gumbo
2
$id = intval($_REQUEST['id']);。这不是验证,而是过滤。 - Alex Pliutau
1
这已经足够对输入进行清理。 - mario
1
你应该告诉用户他做错了什么,因为intval()函数会在不知情的情况下修改他的输入。 - Ondřej Mirtes
显示剩余4条评论
3个回答

1

你可以使用filter_var

<?php
$var = filter_var('0755', FILTER_VALIDATE_INT);
?>

神奇的事情在于,您可以进行更复杂的验证,例如(最小长度、默认值等),请查看php.net的filter_var页面。


1
如果您正在使用足够新的PHP版本,您可以使用过滤器扩展来验证您的输入。

0

再强调一下你的问题:

我是用以下方式过滤用户输入 $id= intval($_REQUEST['id']); 我只接受$id中的整数。 还有什么其他方法可以使其更安全吗?

我认为您可以使用ctype_digit($id)进行True:False过滤。

您只接受$id中的整数,什么是整数:整数是一种不带分数或小数部分的数字。例如,21、4和−2048是整数;9.75、5½和√2不是整数。整数集合是实数的子集,由自然数(1、2、3,...)、零(0)和自然数的负数(−1、−2、−3,...)组成。> 来自维基百科


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接