首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用isset( $_REQUEST["p"] )或$_REQUEST[“p”]

使用isset( $_REQUEST["p"] )或$_REQUEST[“p”]
EN

Stack Overflow用户
提问于 2013-07-04 01:27:02
回答 3查看 31.2K关注 0票数 1

不久前,我在一家实习公司实习,当时我是一名初级网站开发人员。在工作和学习中,我注意到在更改页面时,他们只使用$_POST/GET/REQUEST["var"],而不是使用isset($_POST/GET/REQUEST["var"])

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

代码语言:javascript
复制
?p=sub_artigo&id=2

因此,当我执行if()条件时:

代码语言:javascript
复制
if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){

它没有显示错误,但如果我使用isset(),它会给出我在论坛和这里看到的常见错误。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-04 01:32:05

他们拒绝了error_reporting,这很好,因为这意味着你可以做这样的事情

代码语言:javascript
复制
if ($_POST['whatever']) { ... }

而不是

代码语言:javascript
复制
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'

票数 7
EN

Stack Overflow用户

发布于 2013-07-04 01:32:47

RTM:http://php.net/isset

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

代码语言:javascript
复制
if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){ 

永远不会成功,因为isset()永远不会等于procurar,因此['cont']检查永远不会被计算。

票数 5
EN

Stack Overflow用户

发布于 2013-07-04 01:49:19

当第一条语句为false时,PHP不会修改if语句的其余部分。

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

代码语言:javascript
复制
function ifSet($key) {   
    return (isset($_REQUEST[$key]) && $_REQUEST[$key])?$_REQUEST[$key]:'';
}

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17454492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档