2016-10-07 2 views
1

Ich versuche, eine Anwendung zu erstellen, und ich muss die Referrer URL überprüfen, die auf diese Seite umleitet, die refered paged wird nicht angezeigt ... Es funktioniert, wenn es eine Schaltfläche ist, aber wenn die Seite sonst von einer anderen Seite umleitet bleibt leer. Wie kann ich das tun ??

+0

Sie in der Lage sind ein Ausschnitt aus zu geben, wie Ihr versuchen, die $ _SERVER [zu sparen 'HTTP_REFERER']; –

+0

Dermot

Antwort

3

Es wird/kann leer sein:

  • , wenn der Endbenutzer selbst die Website-URL in Browser-Adressleiste eingegeben.
  • besuchte die Website von einem Browser gepflegt Lesezeichen.
  • besuchten die Website als erste Seite im Fenster/Registerkarte.
  • wechselte von einer https-URL zu einer http-URL.
  • wurde von einer https-URL zu einer anderen https-URL gewechselt.
  • ist eine Sicherheitssoftware installiert (Antivirus/Firewall/etc), die den Referrer von allen Anfragen entfernt.
  • ist hinter einem Proxy, der den Referrer von allen Anfragen streift.
  • besucht die Seite programmatisch (wie Locke), ohne die Referrer-Header-Einstellung (Searchbots!) Von @BalusC

Auch bedeutet es, Sie nicht immer eine Referrer-Adresse haben. Sie können also der Referrer-Adresse überhaupt nicht vertrauen.

Zum Beispiel:

Es ist ein kleines, dass jeder ausnutzen leicht tun können:

Gehen Sie zu einer Website, und injizieren, ein Formular-Code-Daten von dieser Seite auf eine andere Seite senden, also wird die Schicksals-Site Daten von der injizierten Seite erhalten und nicht von dir.

Vertraue niemals Referrer-Adressen. Die Verwendung eines SESSION wird höchstwahrscheinlich der bessere Weg sein, Cross-Site-Formular-Übergaben zu verhindern.

Ich empfehle zu lesen:

0

Sie einen Cookie mit dem Wert der Referrer-URL im Header festlegen, die in 5 Sekunden abgelaufen ist dann in dem neuen Skript holen sie und umleiten zurück zum Referrer

So:

$current_url= base64_encode($url); //$url should point to the current url 

setcookie("referrer",$current_url,time()+5); 
Verwendung

Jetzt können Sie die gespeicherte URL in Ihrem nächsten Skript erhalten:

$referrer= base64_decode($_COOKIE['referrer']); 

und leiten auch mit:

header('Location: '.$referrer); 
Verwandte Themen