2012-02-03 26 views
-1
if(isset($_GET['w'])&&$_GET['w']>=0&&$_GET['w']<=65) 

$_GET['w']具有值(例如)ccc的条件成为真,而它应该只接受来自并包括0以及包括的数字65

+0

你能详细介绍一下吗?你想在这里做什么?那些0 .. 65应该是数字值吗? – 2012-02-03 02:12:26

+0

http://domain/blabla/browse.php?az = 1&w = ccc 这个'ccc'值不应该被接受,但它是某种程度上的! – 2012-02-03 02:14:53

回答

2

“ccc”== 0为真。

您还应该在比较$ _GET [...]参数之前检查它是否是一个数字。

isnumeric()如果我是正确的。

还有其他的测试可以用来检查它是否是十进制数。例如,您可以运行一个preg_match('/^[0-9]+$/', $_GET['w']) == 1

+0

我同意亚历克西斯。正则表达式应该很容易处理你的问题。 – 2012-02-03 02:21:27

+1

还有['ctype_digit'](http://php.net/ctype_digit)... – deceze 2012-02-03 02:30:10

-1

$ _GET作为文本“提交”。如果“文本”不是空的,它是== 1.所以你的条件匹配。为了避免这种情况,首先确保你将“w”格式化为一个整数值/变量。

+0

编号字符串等于零。如果您转换为布尔值,则如果不为空,则它们也被认为等于TRUE。 – 2012-02-03 02:23:55

+0

是的,可能是。无论如何,它匹配> = 0然后。 – djot 2012-02-03 02:25:09

0

如果您将字符串与数字进行比较,PHP会将该字符串视为等于零,因此它将等于零且小于65.您可能还想使用is_integer()以确保它是一个整数。