前一段时间,我正在实习,而我是一名初级网络开发人员。在工作和学习的过程中,我注意到在更改网页时,他们只使用isset($_POST/GET/REQUEST["var"])
而不是$_POST/GET/REQUEST["var"]
。
所以,后来我回到家,尝试了同样的事情。怎么了 ?每次我遇到一个if()
来验证,我必须使用isset()
,否则它会给我一个错误。但请注意一件事,我的网址是:
?p=sub_artigo&id=2
所以,当我执行if()
条件时:
if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){
它没有显示错误,但是如果我使用isset()
,它会给出我在论坛和此处看到的常见错误。
所以我的问题是,为什么不显示第二个变量的错误?
注意:p-> string; id-> int
答案 0 :(得分:6)
他们拒绝error_reporting
,这很好,因为这意味着你可以做像
if ($_POST['whatever']) { ... }
而不是
if (isset($_POST['whatever'])) { ... }
但它也阻止你看到其他可能相关的错误。
此设置位于变量php.ini
下的error_reporting
文件中。
有关ini文件的更多信息,请访问:http://php.net/manual/en/ini.php
同样,isset($_REQUEST["p"])=="procurar"
虽然在sytactically正确,但永远不会返回true,因为isset()
返回一个布尔值。
你想要的是isset($_REQUEST['p']) && $_REQUEST['p'] == 'procurar'
答案 1 :(得分:5)
isset()返回一个布尔值TRUE / FALSE。它会从不返回一个字符串,所以这句话
if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){
永远不会成功,因为isset()永远不会等于procurar
,所以永远不会评估['cont']
检查。
答案 2 :(得分:0)
当第一个语句为false时,PHP不会打扰其余的if语句。
我总是对每个$ _REQUEST,$ _POST或$ _GET键使用以下检查:
function ifSet($key) {
return (isset($_REQUEST[$key]) && $_REQUEST[$key])?$_REQUEST[$key]:'';
}
即使error_reporting设置为E_ALL,也不会发出任何警告。
'isset'检查是否设置了$ key,然后检查$ key是否有值。