1

前段时间,我在实习,我是一名初级网络开发人员。在工作和学习的过程中,我注意到在更改页面时,而不是使用isset($_POST/GET/REQUEST["var"])它们只是使用$_POST/GET/REQUEST["var"].

所以,后来我回到家,尝试了同样的事情。怎么了 ?每次我遇到 aif()来验证这一点时,我都必须使用isset(),否则它会给我一个错误。但请注意一件事,我的网址是这样的:

?p=sub_artigo&id=2

所以,当我做这个if()条件时:

if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){

它不显示错误,但如果我选择isset(),它会给出我在论坛和此处看到的常见错误。

所以我的问题是,为什么不显示第二个变量的错误?

注意:p->string;id->int

4

3 回答 3

7

他们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"虽然语法正确,但永远不会返回 true,因为isset()返回一个布尔值。

你想要的是isset($_REQUEST['p']) && $_REQUEST['p'] == 'procurar'

于 2013-07-03T17:32:05.120 回答
5

RTM: http: //php.net/isset

isset() 返回一个布尔值 TRUE/FALSE。它永远不会返回一个字符串,所以这个语句

if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){ 

永远不会成功,因为 isset() 永远不会等于procurar,所以['cont']永远不会评估检查。

于 2013-07-03T17:32:47.340 回答
0

当第一条语句为假时,PHP 不会费心去尝试 if 语句的其余部分。

我总是对每个 $_REQUEST、$_POST 或 $_GET 键使用以下检查:

function ifSet($key) {   
    return (isset($_REQUEST[$key]) && $_REQUEST[$key])?$_REQUEST[$key]:'';
}

这永远不会给您任何警告,即使 error_reporting 设置为 E_ALL。

'isset' 检查是否设置了 $key,然后检查 $key 是否有值。

于 2013-07-03T17:49:19.187 回答