首頁  >  文章  >  後端開發  >  thinkPHP的redirect跳轉與referer所使用的問題

thinkPHP的redirect跳轉與referer所使用的問題

WBOY
WBOY原創
2016-12-01 01:27:474340瀏覽

如果從Topic/topic頁面跳到Login/login頁面使用$_SERVER['HTTP_REFERER']後再login頁面出來的位址是這樣的http://localhost/a/jz/index .php/Home/topic/topic,這個位址沒錯,為什麼我使用redirect跳轉後網址列上的位址就變成這樣http://localhost/a/jz/index.php/a/jz /index.php/Home/Login/login.html
而且這個跳轉的地址為什麼不是之前存入session的地址呢?
thinkPHP的redirect跳轉與referer所使用的問題

<code>以下是login控制器下login操作方法跳转部分的代码
$url=$_SERVER['HTTP_REFERER'];
session('url',$url);
var_dump(session('url'));
if(!isset(session('res2')[0])){  //验证通过产生的session是否存在
    $this->display();            //不存在session还显示login页面
}else{
    $this->redirect(session('url')); //存在则跳转
}</code>

回覆內容:

如果從Topic/topic頁面跳到Login/login頁面使用$_SERVER['HTTP_REFERER']後再login頁面出來的位址是這樣的http://localhost/a/jz/index .php/Home/topic/topic,這個位址沒錯,為什麼我使用redirect跳轉後網址列上的位址就變成這樣http://localhost/a/jz/index.php/a/jz /index.php/Home/Login/login.html
而且這個跳轉的地址為什麼不是之前存入session的地址呢?
thinkPHP的redirect跳轉與referer所使用的問題

<code>以下是login控制器下login操作方法跳转部分的代码
$url=$_SERVER['HTTP_REFERER'];
session('url',$url);
var_dump(session('url'));
if(!isset(session('res2')[0])){  //验证通过产生的session是否存在
    $this->display();            //不存在session还显示login页面
}else{
    $this->redirect(session('url')); //存在则跳转
}</code>

應該是$this->redirect處理的問題

方法一、把$_SERVER['HTTP_REFERER']獲取到的內容用str_replace去掉前面這部分$url = str_replace('http://localhost/a/jz/index.php','' ,$url);

方法二、不使用$this->redirect(session('url'));跳轉,改用header('location:'.session('url'));exit();

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn