Php 如何从上一页获取请求的URl

Php 如何从上一页获取请求的URl,php,url,cookies,Php,Url,Cookies,我在我的网站上有一个登录页面,在每个页面上我都有一个PHP代码,它将检查cookies,如果用户有特定的cookie,它将停留在该页面上,如果没有,它将重定向到登录页面。 在登录页面上,我有一个按钮,当用户点击它时,cookie就会被创建 当用户单击按钮时,页面应返回到以前的页面。 我的代码是 if(isset($_COOKIE['username'])){ $_COOKIE['username']; header('location: http://example.com/main

我在我的网站上有一个登录页面,在每个页面上我都有一个PHP代码,它将检查cookies,如果用户有特定的cookie,它将停留在该页面上,如果没有,它将重定向到登录页面。 在登录页面上,我有一个按钮,当用户点击它时,cookie就会被创建

当用户单击按钮时,页面应返回到以前的页面。 我的代码是

if(isset($_COOKIE['username'])){
   $_COOKIE['username'];
   header('location: http://example.com/main');
}
else{
//
}

是否仍然可以找到上一页的链接或原始请求的URL?

是的,您可以使用在以下位置找到的
HTTP\u REFERER
值:

if(isset($\u COOKIE['username'])){

$\u COOKIE['username'];//一个额外的小字节是使用
history.go(-1)转储一些javascript
。不总是有效的,但也不取决于服务器是否收到了有效的引用。谢谢@Fred ii-,这就是为什么我说不应该存在依赖关系,但是如果客户端在这种情况下发送了一个被操纵的
HTTP\u引用程序,它们将被反弹回被操纵的路径…@MarcB如果使用rs来自谷歌或其他地方,他们也会再次回到那里,有没有办法防止这种情况发生?不是真的。通过设计,你看不到你的
go()
ing,因为其中一些URL可能与你的网站无关(例如,谷歌结果->直接到你的页面)。但是,同样,由于您不能信任客户端提供的任何内容,因此您的可用选项有限。@Amir您想要的不是我会采取的方法。如果您因为用户未登录而需要跳出用户,我会返回一个带有登录提示的“拒绝访问”页面,或者通常只是一个登录提示。消除了大量猜测!
if(isset($_COOKIE['username'])) {
    $_COOKIE['username']; // <-- what is this for? What are you doing with it?
    header('location: http://example.com/main');
    die();
}
else{
    header(
        'Location: ' . 
        !empty($_SERVER['HTTP_REFERER']) ? 
            $_SERVER['HTTP_REFERER'] : 
            'http://example.com/access_denied' // In case HTTP_REFERER is blank, fallback to this
    );
    die();
}