不确定我是否没有看到什么或什么,但我有一个简单的id验证
$id = '2s2';
var_dump($id);
var_dump($id*1);
if ($id != ($id*1) || $id <= 0) {
die('wrong id');
}
die('here?');
Run Code Online (Sandbox Code Playgroud)
结果:
string '2s2' (length=3)
int 2
here?
Run Code Online (Sandbox Code Playgroud)
它检查是否id相同id multiplied by 1 或者值是零还是更低.因为,$id = '2s2;它的值不相同(在转储中可以看到).
为什么这不回应wrong id?
我猜你把它乘以1来看看它是否$id是数字.在这种情况下,您可以简单地:
if (!is_numeric($id) || $id <= 0) {
die('wrong id');
}
Run Code Online (Sandbox Code Playgroud)