无法理解为什么未定义索引

时间:2013-10-03 19:08:31

标签: php

我还是php的新手,还在尝试。我得到一个未定义的变量索引:

$httpreferer = $_SERVER['HTTP_REFERER'];

页面的整个代码是:

<?php

ob_start();
session_start();
$current_file = $_SERVER['SCRIPT_NAME'];
$httpreferer = $_SERVER['HTTP_REFERER'];

function loggedin(){
    if(isset($_SESSION['user_id'])&&!empty($_SESSION['user_id'])){
        return true;
    }
    else
    {
        return false;
    }
}

?>

对不起,如果这是一个蹩脚的问题。我还是个初学者。

提前致谢。

2 个答案:

答案 0 :(得分:2)

浏览器(客户端)可以自由发送他们喜欢的任何HTTP头。你不能相信他们!

检查客户端是否使用isset()提供了一个:

if (isset($_SERVER['HTTP_REFERER'])) {
  // do something
}

请记住,这并不能说明数据本身。它可能是任何东西。

答案 1 :(得分:0)

如果访问者没有推荐人(由于各种原因,他可能不会,例如直接访问网页 - 而不是点击其他网站上的链接,或来自HTTPS链接),那么此变量将不会存在

你能做的就是这个

$httpreferer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'];

这是一个三元运营商。 http://php.net/manual/en/language.operators.comparison.php