【问题标题】:URL before Referer URL PHP引用 URL PHP 之前的 URL
【发布时间】:2017-06-21 05:02:13
【问题描述】:

我需要在 HTTP_REFERER URL 之前获取 URL,例如用户在到达最后一个页面之前访问了哪个 URL,我在 Observer 中单击按钮时从该页面获取 HTTP_REFERER。

问题是:如何获取HTTP_REFERER之前的URL?

谢谢;)

【问题讨论】:

  • 您的问题到底是什么?如果我理解正确,您想要返回 2 页的 URL?

标签: php url session referer


【解决方案1】:

你是说像这个? one_back 是上一页。 two_back 是前两个引用页面。

<?php
    session_start();
    if ($_SERVER['HTTP_REFERER'])
    {
        $_SESSION['two_back'] = $_SESSION['one_back'] ?: NULL;
        $_SESSION['one_back'] = $_SERVER['HTTP_REFERER']?: NULL;
    }
?>

【讨论】:

  • @ArtursNikitins 你的意思是这样吗?
  • @Bora 我认为 OP 想要这些信息。会话绑定到计算机而不是服务器,因此 OP 甚至无法访问这些变量。
  • 他想要上一页的HTTP_REFERER,例如a.com->b.com->hisdomain.com 所以他想要a.com..
【解决方案2】:

没有真正的方法可以这样做。 $_SERVER['HTTP_REFERER'] 甚至只有在您从其他地方链接时才可用(在这种情况下是引用者)。当您自己输入 URL 时不会。

一种让您在当前页面之前获得 2 页的方法是当您有一种用户跟踪形式并将其保存在数据库中时。

例如,每次用户访问时,您都会在数据库中插入一行,其中包含用户的位置、IP 和当前日期时间。

代码示例:

$db = null;

// Try to make a database connection
try
{
    $db = new PDO('mysql:host=localhost;dbname=mydatabase', 'user', 'password');
}

// In case of failed connection,
// catch the error so it won't give away your information.
catch(PDOException $e)
{
    die("Connection failed");
}

// Prepare the statement
$trackUser = $db->prepare("INSERT INTO `mytable`(`IP`, `URL`, `Date`) VALUES(:ip, :url, :date)");

// Set the datetime in yyyy-mm-dd hh:mm:ss
$datetime = strftime("%F %T");

// Bind everything
$trackUser->bindParam(":ip", $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
$trackUser->bindParam(":url", $_SERVER['REQUEST_URI'], PDO::PARAM_STR);
$trackUser->bindParam(":date", $datetime, PDO::PARAM_STR);

$trackUser->execute();

但是直接从用户那里得到它?你不能那样做。

来自手册

将用户代理引至 当前页面。这是由用户代理设置的。并非所有用户代理都会 设置这个,有些提供修改 HTTP_REFERER 作为 特征。简而言之,它不能真正被信任。

【讨论】:

    【解决方案3】:

    我这样做的方式是使用 nginx 将 uri 存储为获取字符串

    error_page 404 $scheme://$host/404.php?referer=$request_uri;

    所以website.com/not-found 将转到website.com/404.php?uri=/not-found

    显然这是一个测试用例,但如果你知道有一些类似的问题,那么你可以走这条路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多