(getenv(HTTP_REFERER) in counter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • (getenv(HTTP_REFERER) in counter

    hi leute,

    folgenden counter hab ich in meine index.php eingebunden:
    problem => siehe kommentar

    <?php
    if (!strstr(getenv(HTTP_REFERER), "http://mysite.de/index.php")) {
    //mit diesem befehl will ich verhindern, dass der counter
    weitergezählt wird wenn der user refresh im browser clickt
    => funtzt aber nicht. hab echt keine ahnung warum


    $file = "counter.txt"; // Dateizuweisung
    $ftp = @fopen($file,"r+"); // oeffnet die Datei
    $count = (int)fgets($ftp,50); // Holt die ersten 50 Zeichen
    $count++; // Addiert eine 1
    rewind($ftp); // Setzt Zeige auf 0. Position
    fwrite($ftp,$count); // Schreibt
    fclose($ftp); // Schliesst die Datei

    for ($i = 1; $i <= strlen($count); $i++) //zaehlt die Anzahl der Zeichen
    {
    $zahl = substr($count, $i - 1, 1); //1.-n Zeichen werden einzeln gelesen
    for ($z = 0; $z < 10; $z++)
    {
    if ($zahl == $z) //das Zeichen wird eine Grafik eingesetzt
    {
    echo "<IMG SRC=$z.gif WIDTH=15 HEIGHT=20 BORDER=0 ALT=$z>";
    }
    else{echo "";}
    }
    } //end for
    } //end if
    ?>


    bitte um rat
    $PHP resource 4ever$

  • #2
    hmm,

    hast du dir den Refferer mal mittels echo anzeigen lassen ?

    Kommentar


    • #3
      wie??
      mit echo $HTTP_REFERER; krieg ich da nix raus.
      $PHP resource 4ever$

      Kommentar


      • #4
        hmm,

        wie willst du was vergleichen wenn du nichts raus bekommst ?
        Eigentlich sollte das gehen. Ab und an haben Winmaschinen probleme mit direkt $HTTP_.. das musst auch mit getenv auslesen !

        Kommentar


        • #5
          ???
          wie meinst du das jetzt konkret mit dem echo-befehl bzw. warum funtzt der befehl
          if (!strstr(getenv(HTTP_REFERER), "http://mysite.de/index.php")) {
          nicht??


          P.S.: wann spielen wir wieder chess??
          $PHP resource 4ever$

          Kommentar


          • #6
            if (!strstr(getenv('HTTP_REFERER'), "http://mysite.de/index.php")) {

            HTTP_REFERER ist keine Konstante.

            CAT Music Files

            Kommentar


            • #7
              hmm, hab grad die '' eingebaut. funtzt aber leider auch nicht. beim refreshen wird der counter immer weitergezählt.

              wie kann ich mir den referer im browser ausgeben lassen??

              <<<langsam aber sicher bin ich am verzweifeln>>>
              $PHP resource 4ever$

              Kommentar


              • #8
                Das größte Problem am referrer is, daß die meisten firewalls den unterdrücken. Dann funktioniert dein script natürlich nicht.
                Du könntest es mit cookies oder sessions probieren.
                Of all things I've lost
                I miss my mind the most

                Kommentar


                • #9
                  und wie sieht das mit sessions aus??
                  bei cookies hab ich ja wieder das problem, dass sie der user deakiviert haben kann.
                  $PHP resource 4ever$

                  Kommentar


                  • #10
                    bin grad auf noch ein problem draufgekommen.
                    meine site wird von einer hauptURL auf eine andere weitergeleitet.
                    durch diese weiterleitung zählt mein php-counter jetzt auch immer ZWEI zugriffe rauf anstatt nur einem.

                    wie kann man das umgehen??
                    => besteht da viell. die möglichkeit, 'ne if-abfrage vor den counter-code zu stellen die überprüft, ob die weiterleitungsURL schon erreicht wurde?? wenn nein, dann soll php in den couter-code gar nicht reinkommen damit er nicht weitergezählt werden kann.
                    $PHP resource 4ever$

                    Kommentar


                    • #11
                      Die Sache ist ganz einfach - wenn der User eine Seite reloadet, wird schlichtweg kein referrer gesetzt, also gibts da auch nix zu vergleichen....

                      du hast zwei möglichkeiten: speichere die ip des benutzers in einem textfile oder (besser, weil performanceschonender) in einer datenbank und frag die bei jedem aufruf des counters ab - wenn identisch, wird nicht hochgezählt, wenn unterschiedlich, wird weitergezählt.

                      um damit auch die aol-user und andere proxies mit stetig wechselnder ip zu erschlagen mußt du noch einen schritt weitergehen, nämlich dem user und seiner ip eine session-id zuordnen und die zum einen auf deinem server zwischen-cachen für ne gewisse zeitspanne und zweitens dem user per cookie unterschieben.
                      nur dann wirst du wirklich genaue ergebnisse erzielen.

                      demo: http://powercount.caits.de ,-))
                      oder du läßt das mit dem selbercoden direkt ganz sein und schaust dir einfach mal den PowerPhlogger von Philip Iezzi unter http://www.phpee.com an - das dingen kann das alles und noch viel mehr. ich hab das teil in einigen bereichen mitentwickelt und erweitert und unter anderem die deutsche doku und localisation beigesteuert. mein counter basiert letzten endes auch auf dem script.

                      gruß carsten
                      CAITS MovieBase für Windows - Filme verwalten mit System!

                      CAITS PowerCounter - mehr Statistik gibt es nicht!

                      Kommentar


                      • #12
                        Probiers mal so

                        PHP-Code:
                        $Referer getenv("HTTP_REFERER");

                        if (!
                        strchr($Referer"url1" )) {

                        if (!
                        strchr($Referer"url2" )) {

                        Counteraufruf

                         
                        exit();
                        }

                        das Müste genügen

                        Kommentar


                        • #13
                          OffTopic:
                          @rim
                          meinst du nicht, das problem hat sich nach 1 Jahr, 7 Monaten und 8 Tagen gelöst?
                          Kissolino.com

                          Kommentar

                          Lädt...
                          X