112

$_SERVER['HTTP_REFERER'];用来获取引荐来源网址。它按预期工作,直到用户单击另一个页面并且引用者更改为最后一页。

如何存储原始引用 URL?

4

5 回答 5

139

将其存储在 cookie 中(如果您的情况可以接受)或会话变量中。

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
于 2009-12-08T04:28:14.693 回答
18

正如 Johnathan 建议的那样,您可能希望将其保存在 cookie 或会话中。

更简单的方法是使用 Session 变量。

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

将其放在页面顶部,您将始终能够访问指向该网站访问者的第一个引用者。

于 2009-12-08T04:30:36.217 回答
4

将其存储在仅持续当前浏览会话的 cookie 中

于 2009-12-08T04:29:02.590 回答
4

在大多数情况下,使用 Cookie 作为参考页面的存储库要好得多,因为 cookie 将保留引用者直到浏览器关闭(并且即使浏览器选项卡关闭也会保留它),所以如果用户让页面保持打开状态,让我们说在周末之前,并在几天后返回它,您的会话可能会过期,但 cookie 仍然会存在。

将该代码放在页面的开头(在任何 html 输出之前,因为 cookie 只会在任何回显/打印之前正确设置):

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

然后您可以稍后访问它:

$var = $_COOKIE['origin_ref'];

除了 @pcp 关于转义 $_SERVER['HTTP_REFERER'] 的建议之外,在使用 cookie 时,您可能还希望在每个请求上转义 $_COOKIE['origin_ref']。

于 2017-01-08T07:12:28.610 回答
-5

试试这个

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)
于 2019-06-23T14:46:47.813 回答