0

我还是 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;
    }
}

?>

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

提前致谢。

4

2 回答 2

2

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

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

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

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

于 2013-10-03T19:12:38.127 回答
0

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

你能做的就是这个

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

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

于 2013-10-03T19:19:55.823 回答