使用isset($ _ REQUEST [“p”])或$ _REQUEST [“p”]

时间:2013-07-03 17:27:02

标签: php

前一段时间,我正在实习,而我是一名初级网络开发人员。在工作和学习的过程中,我注意到在更改网页时,他们只使用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

3 个答案:

答案 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)

RTM:http://php.net/isset

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是否有值。