我的网站使用PHP来检查用户使用“get”方法提交的值是否为某个整数。代码是
的代码if ($_GET['input']==2) { ... }
但是我最近发现,如果用户输入2a
,2two
甚至2omdodonsos
之类的内容,PHP仍会将其视为值2
。但是,如果用户输入23eee
,23twenty
或23ofnofnonf
,则不会将其视为2
。为什么会这样?将使用此代码:
if ($_GET['input']="2") { ... }
解决问题?
答案 0 :(得分:2)
您可以(并且应该)使用input filtering来清除错误的输入:
if (is_null($input = filter_input(INPUT_GET, 'input', FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE))) {
// an entry that was not an integer
} elseif ($input === 2) {
// input was 2
}
另请参阅:filter_input()
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以检查GET值是否为数字,然后将其与数字2进行比较:
if (is_numeric($_GET['input']) ) {
switch($_GET['input']) {
case 1:
case 2:
// write your code here
break;
default:
//Default option
}
}
或者直接使用===比较运算符@fab建议。