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