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

  • iphonefreak
    hat ein Thema erstellt Counter mit ipvergleich.

    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ß

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

    Einen Kommentar schreiben:


  • RustyXXL
    antwortet
    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.

    Einen Kommentar schreiben:


  • Hu5eL
    antwortet
    wenn du das googelst siehst du, das ein cookie vor der ersten ausgabe gesetzt werden muss

    Einen Kommentar schreiben:


  • iphonefreak
    antwortet
    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!

    Einen Kommentar schreiben:


  • iphonefreak
    antwortet
    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) ;
    ?> 

    Einen Kommentar schreiben:


  • Griffith
    antwortet
    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?

    Einen Kommentar schreiben:


  • iphonefreak
    antwortet
    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?

    Einen Kommentar schreiben:


  • Griffith
    antwortet
    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...

    Einen Kommentar schreiben:

Lädt...
X