使用PHP获取原始URL引用?


110

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

如何存储原始引用网址?

Answers:


137

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

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
请在下面的答案中注明@pcp的建议!
d -_- b

6
请注意,您还应该检查是否http_referer存在(通常不存在),这可能会导致“未定义索引”错误。
贾斯汀

17

正如Johnathan建议的那样,您可能想要将其保存在Cookie或会话中。

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

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

将其放在页面顶部,您将始终能够访问站点访客所指导的第一个引荐来源。


4

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


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']。


-4

试试这个

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

这与获取有关,IP ADDRESS但帖子REFERER与导致问题的网页有关。
Sanxofon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.