Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引用URL之前的URL URL PHP_Php_Url_Session_Referer - Fatal编程技术网

引用URL之前的URL URL PHP

引用URL之前的URL URL PHP,php,url,session,referer,Php,Url,Session,Referer,我需要在HTTP\u REFERER URL之前获取URL,就像用户在到达最后一页之前访问的URL一样,当点击按钮时,我在Observer中获取HTTP\u REFERER 问题是:如何在HTTP_REFERER之前获取上一个URL 谢谢;) 你是说像这个返回一页是上一页two_back是前两个参考页面 <?php session_start(); if ($_SERVER['HTTP_REFERER']) { $_SESSION['two_back

我需要在HTTP\u REFERER URL之前获取URL,就像用户在到达最后一页之前访问的URL一样,当点击按钮时,我在Observer中获取HTTP\u REFERER

问题是:如何在HTTP_REFERER之前获取上一个URL


谢谢;)

你是说像这个<代码>返回一页是上一页
two_back
是前两个参考页面

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

没有真正的方法可以做到这一点
$\u服务器['HTTP\u REFERER']
仅当您从其他地方链接(本例中为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修改为 特色。简言之,它真的不可信


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

error\u第404页$scheme://$host/404.php?referer=$request\u uri

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


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

你的问题到底是什么?如果我理解正确,你想要回2页的URL吗?@ArtursNikitins你的意思是这样吗?@Bora我想OP需要这些信息。会话绑定到计算机而不是服务器,因此OP甚至无法访问这些变量。他想要上一页的HTTP\u引用,例如,a.com->b.com->hisdomain.com,所以他想要a.com。。