Heim > Backend-Entwicklung > PHP-Tutorial > ThinkPHPs Redirect-Jump- und Referrer-Nutzungsprobleme

ThinkPHPs Redirect-Jump- und Referrer-Nutzungsprobleme

WBOY
Freigeben: 2023-03-02 13:12:02
Original
4400 Leute haben es durchsucht

Wenn Sie von der Seite Topic/topic zur Seite Login/login springen, $_SERVER['HTTP_REFERER'] verwenden und sich dann anmelden, sieht die Adresse wie folgt aus: http://localhost/a/jz/index.php/Home/topic/topic Diese Adresse ist korrekt, um zu springen zur Adressleiste? Die Adresse wird so http://localhost/a/jz/index.php/a/jz/index.php/Home/Login/login.html?
Und warum ist diese Sprungadresse nicht die Adresse, die zuvor in der Sitzung gespeichert wurde?
ThinkPHPs Redirect-Jump- und Referrer-Nutzungsprobleme

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

Wenn Sie von der Seite Topic/topic zur Seite Login/login springen, $_SERVER['HTTP_REFERER'] verwenden und sich dann anmelden, sieht die Adresse wie folgt aus: http://localhost/a/jz/index.php/Home/topic/topic Diese Adresse ist korrekt, um zu springen zur Adressleiste? Die Adresse wird so http://localhost/a/jz/index.php/a/jz/index.php/Home/Login/login.html?
Und warum ist diese Sprungadresse nicht die Adresse, die zuvor in der Sitzung gespeichert wurde?
ThinkPHPs Redirect-Jump- und Referrer-Nutzungsprobleme

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Es sollte ein Problem sein, mit dem $this->redirect umgegangen werden sollte

Methode 1: Verwenden Sie $_SERVER['HTTP_REFERER'], um den vorherigen Teil des durch str_replace$url = str_replace('http://localhost/a/jz/index.php','',$url); erhaltenen Inhalts zu entfernen

Methode 2: Verwenden Sie nicht

zum Springen, sondern $this->redirect(session('url'));header('location:'.session('url'));exit();

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage