Ankündigung

Einklappen
Keine Ankündigung bisher.

Counter mit ipvergleich

Einklappen

Neue Werbung 2019

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

  • Counter mit ipvergleich

    Servus,

    Hab ein kleines Skript und hätte gerne den Fehler von Euch.

    PHP-Code:
    <?php
    //Get lastip and compare with current
    $ipfilename="ipvergleich.txt";
    $fc fopen ($ipfilename "r") or die ("Can't open $ipfilename");
    $ipstring fread ($fc15);
    $ipcurrent $_SERVER("REMOTE_ADDR");
    if (
    $ipstring != $ipcurrent) {    
    //Save newIP and increase counter
    $fc fopen ($ipfilename "w") or die ("Can't open $ipfilename");
    $ipwrite fwrite ($fc$ipcurrent);
    $fd fopen ($filename "w") or die ("Can't open $filename") ;
    $fcounted $fstring ;
    $foutfwrite ($fd $fcounted ) ;
    fclose($fd) ;
    fclose($fc) ;
    }
    $filename"counter.txt" ;
    $fd fopen ($filename "r") or die ("Can't open $filename") ;
    $fstring fread ($fd filesize ($filename)) ;
    echo 
    "<p class='countertext'><strong>Herzlich Willkommen!</strong></br> 
            Du bist der 
    $fstring. Besucher
            der Seite. Vielen Dank f&uuml;r Deinen Besuch, wenn es Dir
            gef&auml;llt, empfehle diese Seite weiter!</p>"
    ;
    fclose($fd) ;
    ?>
    Ich hätte gerne das die IP mit der letzten verglichen wird bevor der counter erhöht wird. Das aktuelle Problem: der Counter wird immer hochgezählt...
    Hoffe ihr könnt mir weiterhelfen.

    Gruß


  • #2
    Zeile 6: Du musst eckige Klammern benutzen:$ipcurrent = $_SERVER["REMOTE_ADDR"];

    Zeile 11: Du hast nirgendwo $filename deklariert.

    Das was du sagst "Er zähle immer hoch" kann nicht stimmen, weil der Teil deines Quelltextes, der den Counter hochzählen soll, gar nicht funktioniert.

    Nebenbei: Mit [man]file_get_contents[/man] und [man]file_put_contents[/man] könntest du viele Zeilen sparen...

    Und nur die letzte IP zu loggen reicht ohnehin für einen vernünftigen Counter nicht aus. Sobald deine Seite etwas mehr besucht wird, dann ändert sich der Inhalt deiner Datei gerne mal sekündlich...

    Kommentar


    • #3
      Super Danke!
      Aber dann müsste man ja die letzten 10 speichern oder sowas in der Art und dann wird der Counter quasi nur bei jedem 11ten Besucher erhöht macht doch auch keinen Sinn oder?

      Kommentar


      • #4
        Hängt davon ab, was du genau erreichen möchtest.

        Normalerweise möchte man erreichen, dass ein Besucher nur einmal pro Tag gezählt wird. Also entweder wenn er die Seite über eine neue IP aufruft oder jemand mit dieser IP das letzte mal vor 24h auf der Seite war.

        Ein dauerhaftes Sperren einer IP ist übrigens nicht ratsam. Die meisten Provider machen zwar eine Zwangstrennung alle 24h, wodurch die IP des Besuchers erneuert wird, aber manche Leute haben auch Provider, die feste IP-Adressen vergeben, wo sich die IP des Besuchers über Wochen oder Monate nicht ändert.

        Du könntest auch HTTP-Cookies oder Flash-Cookies nutzen, aber die sind leicht manipulierbar. Können aber als kleine Hilfe benutzt werden.

        Die Frage, die dir stellen musst ist: Was möchtest Du genau erreichen?

        Kommentar


        • #5
          Das mit einmal am Tag klingt gut. Also müsste ich das Datum mit in die Datei schreiben. Kann mir jemand das Stück Code dazu posten?

          Außerdem bekomme ich eine Fehlermeldung "Can't open file" bei meinem Skript.
          PHP-Code:
          //Get lastip and compare with current
          $ipfilename="ipvergleich.txt";
          $fc fopen ($ipfilename "r") or die ("Can't open $ipfilename");
          $ipstring fread ($fc15);
          $ipcurrent $_SERVER["REMOTE_ADDR"];
          fclose($fc);
          if (
          $ipstring != $ipcurrent) {    
          //Save newIP 
          $fc fopen ($ipfilename "w") or die ("Can't open $ipfilename");
          $ipwrite fwrite ($fc$ipcurrent);
          fclose($fc) ;
          //increase counter
          $filename"counter.txt" ;
          $fd fopen ($filename "w") or die ("Can't open $filename") ;
          $fcounted $fstring ;
          $foutfwrite ($fd $fcounted ) ;
          fclose($fd) ;
          }
          $fd fopen ($filename "r") or die ("Can't open $filename") ;
          $fstring fread ($fd filesize ($filename)) ;
          echo 
          "<p class='countertext'><strong>Herzlich Willkommen!</strong></br> 
                  Du bist der 
          $fstring. Besucher
                  der Seite. Vielen Dank f&uuml;r Deinen Besuch, wenn es Dir
                  gef&auml;llt, empfehle diese Seite weiter!</p>"
          ;
          fclose($fd) ;
          ?> 

          Kommentar


          • #6
            Ok nach weiterem googlen habe ich das gefunden:
            PHP-Code:
            <?php 
             
            //Liest die Ip aus!// 
            $ip getenv ("REMOTE_ADDR"); 
            /*Erstellt das Cookie mit den Inhalt der Variable $Ip 
            Und das Cookie wird nach 24st. ( +86400 ) wieder gelöscht!*/ 
            setcookie ("ipsperre",$iptime()+86400);  
             
            //Überprüft ob das Cookie "ipsperre" schon vorhanden ist// 
            if(isset($ipsperre)) 

                
            //Liest in den Array "lesaus" die datei counter.dat ein// 
                
            $lesaus file("counter.dat"); 
                
            //Gibt den Array "lesaus" aus// 
                
            echo "<p class='countertext'><strong>Herzlich Willkommen!</strong></br> 
                        Du bist der 
            $lesaus[0]. Besucher
                        der Seite. Vielen Dank f&uuml;r Deinen Besuch, wenn es Dir
                        gef&auml;llt, empfehle diese Seite weiter!</p>"
            ;  

                
            // Ab hier beginnt die Verneinung von if(isset($ipsperre)) - sprich 'das cookie existiert nich'// 
            else 

                
            //Liest die datei counter.dat wieder in einen Array aus//  
                
            $lesaus file("counter.dat");  
                
            //Der Ausgelsende Wert wird um 1 erhöt//  
                
            $lesaus[0]++;  
                
            //Die Datei counter.dat wird im Modus r+ (Lesen und Schreiben/Datenzeiger Am Anfang) geöffnet// 
                
            $datei fopen("counter.dat","r+"); 
                
            //Der Variable $datenm wir der Ausgelsende ( und um 1erhöte) Wert zugeteilt// 
                
            $datenm="$lesaus[0]";  
                
            //Der Datenzeiger wird wieder an den Anfang zurückgesetzt// 
                
            rewind($datei); 
                
            //Der Wert der variable $datenm wird in die Datei geschrieben// 
                
            fwrite($datei,$datenm); 
                
            //Die Datei wird geschlossen// 
                
            fclose($datei); 
                
            //Der Wert der vorhin um1 erhört wurden ist,wird ausgegeben// 
                
            echo "<p class='countertext'><strong>Herzlich Willkommen!</strong></br> 
                        Du bist der 
            $lesaus[0]. Besucher
                        der Seite. Vielen Dank f&uuml;r Deinen Besuch, wenn es Dir
                        gef&auml;llt, empfehle diese Seite weiter!</p>"
            ;  

            ?>
            Eigentlich genau das was ich suche, dennoch bekomme ich bei setcookie die Fehlermelung: Warning: Cannot modify header information - headers already sent by (output started at ... test/index.php:7) in ... test/index.php on line 5.
            Vielleicht kann mir dabei jemand weiterhelfen. Danke!

            Kommentar


            • #7
              wenn du das googelst siehst du, das ein cookie vor der ersten ausgabe gesetzt werden muss
              Under Construktion

              Kommentar


              • #8
                Du gibst schon irgendwas aus bevor dieses Script läuft.
                Such mal hier im Forum oder bei Google nach "Cannot modify header information - Headers already sent". Das sollte dir noch mehr infos dazu verschaffen.

                Kommentar


                • #9
                  Außerdem kann man cookies ganz leicht löschen! Ip finde ich da schon bisschen sinnvoller

                  Kommentar

                  Lädt...
                  X