2016-05-24 6 views
0

Ich habe eine Zielseite mit einem Formular darin. Das Formular hat eine Formularaktion für eine PHP-Datei. Ich schicke alle Felder, die der Kunde zu einem ein api gefüllt, wie folgt aus:HTTP_REFERER in einer Zielseite abrufen - bringt die Landingpage-URL zurück

$input_email = isset($_POST['email']) ? check_plain($_POST['email']) : 'None'; 
$input_name = isset($_POST['name']) ? check_plain($_POST['name']) : 'None'; 
$input_website = isset($_POST['website']) ? check_plain($_POST['website']) : 'None'; 
$input_website = strtolower($input_website); 
$input_content = isset($_POST['content']) ? check_plain($_POST['content']) : 'None'; 
$previous = $_SERVER['HTTP_REFERER']; 

Wie Sie in der letzten Zeile sehen können, ich die HTTP_REFERER von der Seite zu bekommen. Dadurch wird jedoch die URL der Zielseite und nicht die Verweis-URL für die Zielseite zurückgegeben. (Beispiel: Wenn meine Zielseite example.com ist und der Kunde von google.com kommt, möchte ich $ google vorher haben, aber stattdessen habe ich example.com)

Gibt es eine Möglichkeit, es zu machen Arbeit? Beachten Sie auch, dass ich die Probleme mit der Verwendung von HTTP_REFERER

+0

könnten Sie ein verstecktes Feld hinzufügen und eine Session-Array zuweisen (anstatt sich auf 'HTTP_REFERER'), auf der aktuellen Seite/url –

+0

ich das wissen. Wie auch immer, siehe die Antwort unten. Es ist genau das, was ich meinte, obwohl ich 'HTTP_REFERER' benutze, auf das ich mich nicht verlassen würde. Ich weiß, du hast gesagt, dass du dir dessen bewusst bist, aber du solltest es wirklich nicht benutzen. Bearbeiten: Sie haben jetzt Ihren Kommentar gelöscht. –

Antwort

2

So was passiert hier ist, dass Ihre erste Seite laden hat die (angenommen) korrekte http-Referer, aber sobald der Benutzer das Formular, der Referer wird Ihre eigene Domäne

In der Form auf der Zielseite Sie etwas in dieser Richtung

<?php if (isset($_SERVER['HTTP_REFERER'])): ?> 
<input type="hidden" name="http_referer" value="<?= $_SERVER['HTTP_REFERER']; ?>" /> 
<?php endif; ?> 

Dann tun könnte, wenn Sie Ihre Nachbearbeitung tun können Sie für die Existenz von

überprüfen

$_POST['http_referer']

und handeln entsprechend

Verwandte Themen