如何获取前两页';php中的URL

如何获取前两页';php中的URL,php,session,url,Php,Session,Url,我有一个名为Login.php的页面。我需要在最后一页之前输入该页的URL 当用户登录表单将提交到检查用户名和密码的check_login.php时。然后我将用户重定向到index.php 问题是我希望用户被重定向到他们访问过的第二个到最后一个页面 示例: 第一个URL:www.example.com/posts/1 第二个URL:www.example.com/login.php 第三个URL:wwww.example.com/check\u login.php 所以,如果用户名和密码正确=>

我有一个名为
Login.php
的页面。我需要在最后一页之前输入该页的URL

当用户登录表单将提交到检查用户名和密码的
check_login.php
时。然后我将用户重定向到
index.php

问题是我希望用户被重定向到他们访问过的第二个到最后一个页面

示例:

第一个URL:
www.example.com/posts/1

第二个URL:
www.example.com/login.php

第三个URL:
wwww.example.com/check\u login.php

所以,如果用户名和密码正确=>
header('location:www.example.com/posts/1')

有一个解决方案可以获取上一个URL:

// login.php
$_SESSION['url'] = $_SERVER['HTTP_REFERER'];

// check_login.php
header('location: '.$_SESSION['url']);
但是我需要得到倒数第二个URL,而不是最后一个URL。如何在PHP中实现这一点

但我想知道有没有一种方法可以让我直接获得前两个网址

是的,你需要这个课程。 e、 g

警告:(php)
将用户代理引用到当前页面的页面(如果有)的地址。这是由用户代理设置的。并非所有的用户代理都会设置此功能,有些代理还提供了修改HTTP_REFERER的功能。简言之,它真的不可信

做别人做过的事:

第一个解决方案:

在页面中创建一个
hidden
字段,这样当用户单击
login
时,它将带他进入带有上一个链接的
login.php
页面。然后,您可以使用此链接执行任何操作(例如,将其保存到
$\u会话['url']

第二种解决方案:

想象你有一个这样的锚:
。 您可以使用
login.php?重定向到=http://example.com/post/1
以便您可以通过
$\u GET['redirect\u to']
请求从
login.php
页面访问url


注意:请始终记住清理用户输入数据。

我认为@GinoDeMaria的答案是可行的,但它正在进行一些不必要的检查,并且仍然多次调用以分配变量

使用会话

因此,更简单的方法是:

$_SESSION['2last_url'] = isset($_SESSION['last_url']) ? $_SESSION['last_url'] : null;
$_SESSION['last_url'] = $_SERVER['HTTP_REFERER'];
因此,
$\u会话['2last\u url']
包含您要查找的值

正如Gino所说,用户代理并不总是正确地设置
$\u服务器['HTTP\u REFERER']

在请求中使用重定向值

这种方法稍微优雅一点,并且可能被证明更有用。只需告诉
check_login.php
在登录后将用户重定向到哪里

首先,我们告诉登录页面重定向到哪里。因此,我们没有转到
login.php
,而是转到
login.php?redirect=http%3A%2F%2Fexample.com%2Fpost%2F1
。(您可能会注意到重定向URL看起来很奇怪,这是由于URL编码。或者)

现在,在
login.php
中,必须添加一个包含以下值的隐藏字段:

<input type="hidden" name="redirect" value="<?php echo $_GET['redirect']; ?>">

就我所知,没有。referer只有(有时/可能)上一页。如果你想跟踪多个以前的页面,你必须以某种方式记录下来。旁注:你不应该依赖$\u SERVER['HTTP\u REFERER']@Fred ii-为什么
$\u服务器['HTTP\u REFERER']
无法正常工作?请仔细阅读您的答案,就像我所说的,无论如何,谢谢,+1向上投票支持您。
<input type="hidden" name="redirect" value="<?php echo $_GET['redirect']; ?>">
header("Location: " . $_POST['redirect']);