我打算像这样写一个IF条件:
if (isset($_GET['code']) && !empty($_GET['code']) && ctype_digit($_GET['code'])){
//other code here
}
我的意思是,当然如果我只检查:
if(ctype_digit($_GET['code'])){ }
当然$ _GET ['code']存在并且它不是空的,是不是浪费了第一种方式写这个条件?
答案 0 :(得分:3)
在调用函数之前,有必要检查是否设置了$_GET['code']
:ctype_digit()
如果未设置$_GET['code']
,您将收到与此类似的消息:
注意:未定义的索引:第2行的C:\ xampp \ htdocs \ index.php中的代码
答案 1 :(得分:0)
我认为验证您的输入并不浪费,但如果您再写一次,那就更好了。我将创建一个名为isDigit()和required()的方法或函数,并使用它们来检查您的输入。作为代码审查说明,如果您知道需要什么,那么您应该已经在代码的最开始验证了$ _GET中的必填字段。 (实际上我甚至不会直接调用$ _GET,我会在一个对象中处理它来验证和清理来自外部的数据。)
答案 2 :(得分:-1)
这取决于您的错误处理。如果您省略第一次检查,$_GET
数组中将不存在包含键“代码”的元素,则会引发E_NOTICE
。并且,例如,如果您的服务器在这种情况下响应500错误,用户将看到令人讨厌的500页。
如果您为E_NOTICE禁用了错误报告,则可以省略第一次和第二次检查。
答案 3 :(得分:-2)
使用isset()
和ctype_digit()
应该没问题。