2017-11-26 4 views
-3

Ich möchte umleiten nach einloggen in URL, die in der URI ist. Mein Code ist jetzt:Get und Redirect zu url von uri

if ($count == 1 && $row['userPass']==$password && $row['online']=="N") { 
    $_SESSION['user'] = $row['userID']; 
    mysql_query("UPDATE users SET online='Y' WHERE userID=".$_SESSION['user']); 
    if (isset($_GET['url'])) { 
     $back==$_GET['url']; 
     header("Location: ".$back); 
     exit; 
    } else { 
     header("Location: /subdom/demo/"); 
     exit; 
    } 
} 

Aber es leitet zur Hauptseite um, nicht die Seite von der Uri. URL ist wie localhost/subdom/demo/login.php? Url =/subdom/demo/mixy.php. Warum funktioniert es nicht?

+1

Mysql Bibliothek ist veraltet, siehe [hier] (http://php.net/manual/en/mysql.php), und Ihr Code ist anfällig für SQL-Injection, verwenden Sie [vorbereitete Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) statt – YouneL

+0

Auch ist es schlechte Praxis zu erlauben " open redirects ", dh umleiten zu einer URL, die in der URL angegeben ist. Sie sollten zumindest bestätigen, dass die URL, auf die Sie verweisen, eine relative URL ist (d. H. Ein Teil Ihrer Homepage). – giraff

+0

@giraff Wie kann ich das tun? es funktioniert nicht, also wie? – djlimix

Antwort

0

Haben Sie Ihren Syntaxfehler gesehen?

header("Location: $_GET['url]"); 

Änderung dieser

header("Location: ". $_GET['url']); 
+0

Danke, ich habe es versucht, aber es funktioniert nicht. – djlimix

+0

Haben Sie vor dem Senden der Kopfzeile etwas ausgegeben (auch wenn nur 1 Leerzeichen)? Es gibt die PHP-Funktion 'headers_sent()', um dies zu überprüfen. Wenn Sie dies nicht vermeiden können, müssen Sie stattdessen über Javascript umleiten. – giraff

+0

Ich denke, ich habe nichts vorher ausgegeben, aber ich werde es zu Hause überprüfen – djlimix

0

versuchen, dies hier

if (!empty(@$_GET['url'])) { 
      header("Location: " . $_GET['url]); 
      exit; 
     } else { 
      header("Location: /subdom/demo/"); 
      exit; 
     } 
    } 
+0

Warum nicht isset? Ist es nicht das Gleiche? – djlimix

+0

isset überprüft, ob die Variable existiert. bereits der leere überprüft, ob es leer ist ... Hat es für Sie funktioniert? Wenn es funktioniert, wählen Sie als beste Antwort ... –

+0

Sorry, ich hatte keine Zeit, aber ich werde es diese Woche versuchen – djlimix