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

WBOY
發布: 2023-03-02 13:12:02
原創
4339 人瀏覽過

如果從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();

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!