Counter abhängig vom Referer

x45

chronische Wohlfühlitis
HI!

Ich habe (mal wieder) ein problem... Ich will, das ein Counter abhängig vom Referer hochgezählt wird. z.B. wenn der Besucher von www.blablabla.bla kommt das der counter in der datei bla.txt um 1 erhöht wird, und wenn der von www.hasse-nicht-gesehen.bla kommt in der nichtgesehen.txt.

Mein Code ist folgender:

PHP:
<?php
$referer = getenv("HTTP_REFERER");
    if ($referer == "www.blablabla.bla");
    {
       $fn = "bla.txt";
       $fp = fopen($fn,"r");
       $zahl = fgets($fp,10);
       fclose($fp);
       $zahl = $zahl + 1;
       $fp = fopen($fn,"w");
       flock($fp,2);
       fputs($fp,$zahl);
       flock($fp,3);
       fclose($fp);
	}

    if ($referer == "www.hasse-nicht-gesehen.bla");
    {
       $fn = "nichtgesehen.txt";
       $fp = fopen($fn,"r");
       $zahl = fgets($fp,10);
       fclose($fp);
       $zahl = $zahl + 1;
       $fp = fopen($fn,"w");
       flock($fp,2);
       fputs($fp,$zahl);
       flock($fp,3);
       fclose($fp);
   } 
 echo $referer;
 ?>

Das Problem ist nur, das der jetzt in beiden Datei eins hochzählt, egal von welcher URL man das aufruft....
Was ist an dem Code falsch?

x45
 
Zuletzt bearbeitet:
Die Lösung ist einfach.

Mach hinter den if-Anweisungen, die Semikolon ( ; ) weg, dann funzt es :)


if ($referer == "www.blablabla.bla"); <--Das muss weg (gehört da nicht hin)


if ($referer == "www.hasse-nicht-gesehen.bla"); <--dito
 
Der referer wird unter umständen nicht immer korrekt übertragen.

Prüfe mal, was tatsächlich unter referer gespeichert wird.


P.S. Hast Du auch bei beiden if-anweisungen die Semikolon entfernt ?
 
das habe ich bedacht... es können ja auch nur leute aus dem root kommen.....
 
OK - ich habe mal etwas damit experimentiert.

Zuerst solltest Du mal in der unteren Dateiabfrage andere Variablen verwenden, wie in der oberen, da es sonst zu konflikten kommen kann.

Dann werden die Schrägstriche der Url scheinbar Codespezifisch interpretiert.
Baue nach
$referer = getenv("HTTP_REFERER");
folgendes ein:

$referer = str_replace("http:","",$referer);
$referer = str_replace("/","",$referer);

Damit werden das http und alle Schrägstriche entfernt.

Nun musst Du nur noch deine if-Abfrage dementsprechend anpassen (z.B.www.irgendwasdeunterseite.htm)

So funktioniert es zumindest bei mir.
 
Oben