if(isset($_GET['w'])&&$_GET['w']>=0&&$_GET['w']<=65)
当$_GET['w']
具有值(例如)ccc
的条件成为真,而它应该只接受来自并包括0
以及包括的数字65
if(isset($_GET['w'])&&$_GET['w']>=0&&$_GET['w']<=65)
当$_GET['w']
具有值(例如)ccc
的条件成为真,而它应该只接受来自并包括0
以及包括的数字65
“ccc”== 0为真。
您还应该在比较$ _GET [...]参数之前检查它是否是一个数字。
isnumeric()如果我是正确的。
还有其他的测试可以用来检查它是否是十进制数。例如,您可以运行一个preg_match('/^[0-9]+$/', $_GET['w']) == 1
。
我同意亚历克西斯。正则表达式应该很容易处理你的问题。 – 2012-02-03 02:21:27
还有['ctype_digit'](http://php.net/ctype_digit)... – deceze 2012-02-03 02:30:10
$ _GET作为文本“提交”。如果“文本”不是空的,它是== 1.所以你的条件匹配。为了避免这种情况,首先确保你将“w”格式化为一个整数值/变量。
编号字符串等于零。如果您转换为布尔值,则如果不为空,则它们也被认为等于TRUE。 – 2012-02-03 02:23:55
是的,可能是。无论如何,它匹配> = 0然后。 – djot 2012-02-03 02:25:09
如果您将字符串与数字进行比较,PHP会将该字符串视为等于零,因此它将等于零且小于65.您可能还想使用is_integer()以确保它是一个整数。
你能详细介绍一下吗?你想在这里做什么?那些0 .. 65应该是数字值吗? – 2012-02-03 02:12:26
http://domain/blabla/browse.php?az = 1&w = ccc 这个'ccc'值不应该被接受,但它是某种程度上的! – 2012-02-03 02:14:53