Seite 1 von 1

REFERRER auslesen

Verfasst: 24.02.2007, 14:11
von AGB
hallo,

ich habe eine einfache php-funktion, in der die variable $HTTP_REFERRER ausgelesen wird. nun ist der referrer ja nicht immer gesetzt. deshalb habe ich einfach um den funktionsaufruf eine bedingung gesetzt:
if ($HTTP_REFERRER != "")
{
meinefunktion()
}

Leider wird die funktion jetzt auch bei gesetztem referrer nicht mehr aufgerufen. wo liegt bitte mein denkfehler?

Verfasst:
von

Verfasst: 24.02.2007, 14:30
von chris21
Probier mal:

Code: Alles auswählen

if(isset($HTTP_REFERER))
{
funktion
}
oder

Code: Alles auswählen

if($HTTP_REFERER !== "")
{
funktion
}

Verfasst: 24.02.2007, 14:46
von AGB
danke. das mit dem isset funktioniert.

Verfasst: 24.02.2007, 15:00
von Monk
Die Variable heisst HTTP_REFERER (sic!), nicht HTTP_REFERRER. Der sprachliche Fehler ist leider erst aufgefallen, als das schon spezifiziert und rege in Gebrauch war.

Ich würde bei solchen Tests übrigens prinzipiell if(!empty(...)) nehmen, das erschlägt !isset() und leere Werte in einem.

Verfasst: 24.02.2007, 18:27
von d0nut
eigentlich heißt die Variable ja $_SERVER['HTTP_REFERER']
und so solltest du sie auch im Script verwenden.

Verfasst: 24.02.2007, 18:42
von chris21
@Monk:

!empty ist natürlich noch vernünftiger als isset. Guter Hinweis.

Verfasst: 24.02.2007, 19:09
von bara.munchies
geht nicht auch einfach nur

if($_SERVER['HTTP_REFERER'])
{
funktion
}


?

Verfasst: 24.02.2007, 19:53
von Nullpointer
Monk hat geschrieben:Die Variable heisst HTTP_REFERER (sic!), nicht HTTP_REFERRER. Der sprachliche Fehler ist leider erst aufgefallen, als das schon spezifiziert und rege in Gebrauch war.
...
ist es nicht genau umgekehrt? also mit doppel r die korrekte englische schreibweise?

Verfasst: 24.02.2007, 20:48
von chris21
@Nullpointer: ja, eigentlich wird referrer im Englischen mit Doppel-R geschrieben. Bei PHP hatte sich jedoch dieser Schreibfehler mit einem R eingeschlichen. Daher heißt die Variable wirklich HTTP_REFERER, das sic! setzt Monk da zu Recht.

Jetzt könnten wir nur noch darauf wetten, wielange es dauert, bis sich referer gegen referrer auch im normalen Sprachgebrauch durchsetzt.

Edit: Ah :idea: : jetzt habe ich auch begriffen, warum hier plötzlich die Diskussion ob der Schreibweise aufgetaucht ist. Im Eingangspost von AGB stand HTTP_REFERRER. Ich hatte mich schon gewundert, warum sein Code eigentlich nicht funktioniert. :roll:

Verfasst: 26.02.2007, 11:44
von Monk
@chris: soweit korrekt. Aber der Fehler stammt nicht von PHP. Der ist ein uraltes Erbstück vom NCSA httpd und hat dann seinen Weg in die RFCs und den Rest der Welt gemacht. Kann sogar sein, dass Berners-Lee selbst dafür verantwortlich ist, weiss ich aber nicht genau.

Hach, bin ich am Montag vormittag wieder ein Klugmeier :)
Monk