PHP Get-Parameter von Referer auslesen?

M

Mr. Snoot

Gast
Hio,

kann ich irgendwie Parameter aus der Referer-URL auslesen, oder muss ich das mit preg_match o.ä. machen?

Ich würde gerne Suchbegriffe, die ein Besucher bei Google gefunden hat und darüber zu meiner Seite kommt, hervorheben. Ich bräuchte also das q=suchbegriff aus der Google-URL.
 
Mit http://www.php.net/manual/en/function.parse-url.php kannst du die URL aus dem Referer richtig parsen. Im Array hast du dann die reine Query in der aber noch alle Parameter sind. Da du ja den Rest nicht brauchst kannst dus auch einfach so machen:
PHP:
$query = parse_url($_SERVER["HTTP_REFERER"] , PHP_URL_QUERY)
Das musst du noch zerlegen. Dazu kannst du http://www.php.net/manual/en/function.parse-str.php nehmen aber das ist bissel problematisch weil du damit deine Parameter im Script überschreiben kannst. Daher dort den Zusatzparameter nehmen und in ein Array speichern:
PHP:
parse_str($query, $parameters)
In $parameters hast du dann alles drin, in $parameters['q'] sollte dann "suchbegriff" stehen (um sauber zu programmieren solltest du erst mit array_key_exists('q', $parameters) überprüfen ob der Wert existiert)!
 
Zuletzt bearbeitet:
Perfekt, vielen Dank :)


edit: leider gibts - mal wieder - Probleme mit Umlauten. Ein ä vom Referer kommt beispielsweise so an: %C3%A4. Daher wird das beim Einlesen nicht im String gefunden - dort steht eben ein ä. Wie muss ich das nun wieder de/kodieren, damit das klappt?
 
Zuletzt bearbeitet:
Tipp: Die benötigte Funktion ist in meinem ersten Link auf der linken Seite verlinkt (so viele sind da ja nicht)...
 
Das: http_build_query — Erstellen eines URL-kodierten Query-Strings ?

Klappt nicht - auch das alles zeigt keine Wirkung: htmlentities, html_entity_decode, utf8_decode, utf8_encode, urldecode, urlencode, htmlspecialchars
 
urldecode natürlich. Das sollte eigentlich schon den Text korrekt umwandeln, lass ihn dir mal ausgeben. Dass das matching trotzdem nicht geht könnte an Zeichensatzproblemen liegen (UTF8).
 
Da bekomme ich das (kleines ä): ä

Wenn ich darüber nochmal utf8_decode laufen lassen, kommt ein ä heraus. Aber es klappt trotzdem nicht. Da liegt der Fehler wohl woanders!?


edit: argl, hatte von früher an einer späteren Stelle noch ein htmlentities drin, was das ganze wohl zunichte gemacht hat. Jetzt läufts; die Umlaute bringen mich noch um den Verstand :D

Danke schön :)
 
Zuletzt bearbeitet:
Zurück
Oben