# Referer abfragen und prüfen



## Identität (19. September 2008)

Hallo,

ich bin nicht so der Überflieger in PHP, dennoch möchte ich ein Script programmieren, welches aus dem Referer z.B. das "domain.de" rausholt und das dann prüfen kann. Also in der Art so:


```
<?php
$referer = $_SERVER['HTTP_Referer'];
if(preg_match('domain.de', $referer)){
 echo "Du bist nicht von hier";
}
?>
```

Ich denke es wird ein Anfängerfehler sein, jedoch habe ich schon die einzelnen PHP-Befehle durchgesehen und weiß nicht wo der Fehler liegt. Vielen Dank für eure Hilfe!


----------



## kuddeldaddeldu (19. September 2008)

Hi,

schau Dir mal [phpf]parse_url[/phpf] an.
Bedenke aber, dass man den HTTP-Referrer sehr einfach fälschen oder ganz unterdrücken kann.

LG


----------



## TS-JC (19. September 2008)

die einfachste Möglichkeit ist es eine Seite mit einem Link auf die PHP zu erstellen, da rein ein "echo $referrer" und dann mal direkt zu schaun was du als ausgabe bekommst

das ist dann ja ein string mit dem du arbeiten kannst, ich denke mal da wird ja http://www.domains.de/site.html drin stehen

btw einige firewalls und virenscanner blocken sowas.. also aufpassen


----------



## Gumbo (19. September 2008)

Du solltest auch beachten, dass nicht immer ein HTTP-Referrer-Wert existiert, da es entweder keinen gibt oder dieser nicht mitgesendet wurde.


----------



## Identität (19. September 2008)

Danke für eure Hilfe, aber warum funktioniert dieser Test von mir nicht? Der Referer ist vorhanden, aber er gibt nicht 1 oder 0 zurück. Es kommt rein gar nichts.

Was mache ich denn falsch?


```
<?php
    echo preg_match('domain.de', $HTTP_SERVER_VARS["HTTP_REFERER"]);
?>
```


----------



## TS-JC (19. September 2008)

```
if (!isset($_SERVER['HTTP_REFERER'])) {
  echo "Dein Browser hat keinen Header gesendet"; //oder sonst irgendeine Funktion...
else echo $_SERVER['HTTP_REFERER']
}
```

schreib doch das mal rein
und was kommt dann?


----------



## Identität (19. September 2008)

Ich glaube ich hätte es besser erklären sollen. Also der Referer soll nicht ausgegeben werden. Ich möchte prüfen ob jemand von einer Seite auf eine Andere kommt (beide gehören mir). Wenn ja, soll eine Meldung kommen das man die Seite verlassen hat. Deswegen muss der Referer geprüft werden und wenn im Referer "domain.de" vorkommt, soll eine Meldung ausgegeben werden. Tut mir Leid, dass ich mich so schlecht ausgedrückt habe ;-)

P.S. Coole Page über Abzocker hast du da ;-)


----------



## kuddeldaddeldu (19. September 2008)

Hi,



Identität hat gesagt.:


> Ich möchte prüfen ob jemand von einer Seite auf eine Andere kommt (beide gehören mir). Wenn ja, soll eine Meldung kommen das man die Seite verlassen hat. Deswegen muss der Referer geprüft werden und wenn im Referer "domain.de" vorkommt, soll eine Meldung ausgegeben werden.



Du kannst Dich aber nunmal nicht auf Existenz und Korrektheit des Referrers verlassen.

Warum benutzt Du preg_match, wenn Du auf einen festen String prüfen willst? Schau Dir [phpf]parse_url[/phpf] an.

LG


----------

