isset是否适用于GET?

时间:2012-01-29 04:25:00

标签: php codeigniter get isset server-error

我知道这似乎是一个愚蠢的问题,通过更多的研究,我可以找到答案,但我有一个截止日期来取悦帮助。

使用codeigniter我试图查看网址中的'ID'是'uID'(用户ID)还是'sID'(系统ID)。

使用的代码是:

    if(isset($this->input->get('uID'))) {
        $getID = $this-input->get('uID');
    } else {
        $getID = $this->input->get('sID');
    }

当我使用它时,我收到服务器错误,说网站暂时停机或正在施工。有任何想法吗?

提前感谢您的帮助。通常我会花更多的时间自己寻找答案但我今晚没有时间。

2 个答案:

答案 0 :(得分:4)

您收到的警告可能是500错误 - 意味着您的服务器未设置为向您显示错误,或者您没有在index.php文件中启用它。

您收到但未看到的错误是:“致命错误:无法在写入上下文中使用函数返回值”,因为您无法在函数上使用isset。

如果你不能做到你所期望的,因为CI $this->input->get('key')总是返回一个值 - 如果密钥不存在则返回false。

因此,为了完成你想要做的事情,你会写:

$getID = $this->input->get('uID') ? $this->input->get('uID') : $this->input->get('sID');

根据下面的评论,我认为我也会以对你有意义的方式提供它:

if($this->input->get('uID')) {
  $getID = $this->input->get('uID');
}
else {
  $getID = $this->input->get('sID'):
}

这两种解决方案在功能上是相同的。

答案 1 :(得分:2)

isset仅适用于变量 $this->input->get()函数调用。这会给你一个错误。

我猜如果请求中未设置uID$this->input->get将返回nullfalse或其他类似内容。即您不需要isset,返回值应该已经 falsey

我建议您花一点时间阅读The Definitive Guide To PHP's isset And empty