不久前,我在一家实习公司实习,当时我是一名初级网站开发人员。在工作和学习中,我注意到在更改页面时,他们只使用$_POST/GET/REQUEST["var"],而不是使用isset($_POST/GET/REQUEST["var"])。
所以,后来我回到家,尝试了同样的事情。会发生什么?每次我遇到if()来验证这一点时,我都必须使用isset(),否则它会给我一个错误。但请注意一件事,我的url是:
?p=sub_artigo&id=2因此,当我执行if()条件时:
if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){它没有显示错误,但如果我使用isset(),它会给出我在论坛和这里看到的常见错误。
所以我的问题是,为什么不显示第二个变量的错误?
注意: p->string;id->int
发布于 2013-07-04 01:32:05
他们拒绝了error_reporting,这很好,因为这意味着你可以做这样的事情
if ($_POST['whatever']) { ... }而不是
if (isset($_POST['whatever'])) { ... }但它也会阻止您看到其他可能相关的错误。
此设置位于变量error_reporting下的php.ini文件中。
有关ini文件的更多信息可在此处找到:http://php.net/manual/en/ini.php
此外,尽管isset($_REQUEST["p"])=="procurar"在语法上是正确的,但它永远不会返回true,因为isset()返回一个布尔值。
你想要的是isset($_REQUEST['p']) && $_REQUEST['p'] == 'procurar'
发布于 2013-07-04 01:32:47
RTM:http://php.net/isset
isset()返回布尔值TRUE/FALSE。它将永远不会返回字符串,所以这条语句a string
if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){ 永远不会成功,因为isset()永远不会等于procurar,因此['cont']检查永远不会被计算。
发布于 2013-07-04 01:49:19
当第一条语句为false时,PHP不会修改if语句的其余部分。
我总是对每个$_REQUEST、$_POST或$_GET密钥使用以下检查:
function ifSet($key) {
return (isset($_REQUEST[$key]) && $_REQUEST[$key])?$_REQUEST[$key]:'';
}即使error_reporting设置为E_ALL,这也不会给您任何警告。
'isset‘检查是否设置了$key,然后检查$key是否有值。
https://stackoverflow.com/questions/17454492
复制相似问题