2009-03-03 7 views
6

Ich erstelle eine Website und auf einer bestimmten Seite möchte ich den Benutzer zurück zur vorherigen Seite senden. Ich bin ziemlich neu in PHP/HTML und habe bereits vorhandenen Code für Ideen und Hilfe verwendet.php/html - http_referer

Der vorhandene Code verwendet die folgende Methode:

if (! empty($HTTP_REFERER)) 
{ 
    header("Location: $HTTP_REFERER"); 
} else 
{ 
    header("Location: $CFG->wwwroot"); 
} 

Allerdings, wenn ich diesen Code verwenden die HTTP_REFERER immer als leer und den Benutzer auf die Root-Seite umgeleitet behandelt wird. Irgendwelche offensichtlichen Mängel in diesem Code?

Antwort

13

Sie müssen verwenden:

$_SERVER['HTTP_REFERER'] 
0

Beachten Sie auch, dass der Referer-Header leer sein könnte oder fehlt sowieso, also sollten Sie nicht überhaupt auf sie verlassen ..

14

nicht verlassen Der HTTP-Referrer ist ein gültiges oder sogar nicht leeres Feld. Die Benutzer können wählen, dass diese Gruppe nicht gesetzt werden soll, wobei überprüft werden soll, ob diese Variable auf die leere Seite der IF-ELSE-Klausel geht.

Sie können sich davor schützen, indem Sie einen Parameter in den URL- oder POST-Parametern senden, der einen Wert enthält, mit dem Sie den Benutzer zurückleiten können.

+3

+1. Referrer sind von Natur aus unzuverlässig. Verwenden Sie einen Parameter, um den Benutzer dorthin zu leiten, wohin er nach dem Formular gehen soll. – bobince

0

Sie

aus Sicherheitsgründen abgeschaltet werden
$_SERVER['HTTP_REFERER'] 

schauen jedoch bei der register_globals Konfiguration in der php.ini, sollte es verwendet werden soll. Sie können mehr auf PHP Manual site lesen.

1

isset ($ _ SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']: '';

Verwandte Themen