Heim  >  Artikel  >  Backend-Entwicklung  >  ThinkPHPs Redirect-Jump- und Referrer-Nutzungsprobleme

ThinkPHPs Redirect-Jump- und Referrer-Nutzungsprobleme

WBOY
WBOYOriginal
2016-12-01 01:27:474386Durchsuche

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>

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>

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();

Stellungnahme:
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