Billiger Counter in PHP



  • Moin Leutz! 🙂

    Ich hab folgendes Problem:
    Ich habe aus Übungszwecken ein PHP-Script geschrieben dass die Anzahl der Hits auf einer Seite zählt. Das ganze funktioniert auch ganz gut. Die anzahl der hits wird in einer textfile "counter.txt" abgelegt. wenn die datei nicht extistiert, wird sie angelegt. und genau hier liegt auch mein problem: wenn die datei nicht existiert und der php-code aufgerufen wird, erscheint mir diese meldung:

    Warning: fopen("counter.txt", "r") - No such file or directory in C:\server\zaehler.php on line 25

    kann ich das nicht irgendwie machen, dass diese meldung weg bleibt?!?!?

    hier ist mein Code

    <html>
    <head>
    <title>Mein erster billiger Counter</title>
    </head>
    <body bgcolor="#000000" font-face="Verdana" text="#FFFFFF">
    
    <?
    if(!($zeiger = fopen("counter.txt", "r")))
    {
        echo "Datei nicht da!!";
        $zeiger = fopen("counter.txt", "w");
        fclose($zeiger);
    
        $zeiger = fopen("counter.txt", "r+");
        $zaehler=1;
        fwrite($zeiger, $zaehler); 
        fclose($zeiger);
    }else
    {
        $zeiger = fopen("counter.txt", "r+");
        $zaehler = fgets($zeiger, 50);
        $zaehler = $zaehler+1;
        echo $zaehler;
        rewind($zeiger);
        fwrite($zeiger, $zaehler); 
        fclose($zeiger);
    }
    
    ?>
    </body>
    </html>
    

    [ Dieser Beitrag wurde am 28.02.2003 um 16:17 Uhr von Peter Piksa editiert. ]

    [ Dieser Beitrag wurde am 28.02.2003 um 16:18 Uhr von Peter Piksa editiert. ]



  • warum machst dus nicht einfach mit mysql...

    eine wert, den du bei jedem seitenaufruf incrementierst??

    mfg



  • weil ich das nicht mit mySQL, sondern mit einer txtfile machen möchte 🙂
    ausserdem bekomm ich mySQL bei mir aufm rechner nicht zum laufen 😞

    hmm komisch, ich habe das script vor einer minute auf Tripod hochgeladen und da kam diese Zeile mit der Fehlermeldung nicht, sondern es wurde einfach der Code weiterabgearbeitet....liegt das vielleicht an einer einstellung in meiner php.config???

    [ Dieser Beitrag wurde am 28.02.2003 um 16:16 Uhr von Peter Piksa editiert. ]



  • ka kann ich dir nicht sagen. aber das mysql bei dir net läuft.... musst dir mal die readme durchlesen... also das hab sogar ich geschafft 😃 😃 😃
    mfg



  • Hi !

    Es gibt da eine Funktion namens file_exists, die scheint wie geschaffen für dich, meinst du nich 🙂
    Dass Tripod keinen Fehler anzeigt hat damit zu tun, dass die meisten Webhoster PHP Fehlermeldungen einfach unterdrücken ...

    Noch eine Frage : Was macht rewind($zeiger) ?



  • Rewind "spult zurück" 😃
    Der File-Pointer "$Zeiger" geht dann wieder an den Anfang der File.
    Ich werd gleich mal nach file_exists schauen....

    ====================================

    Sauber...ich hab das mit file_exists ausgetestet und das ist echt um längen besser!! Vielen Dank für den Tip!

    So sieht die ganze Geschichte nun aus

    <html>
    <head>
    <title>Mein erster billiger Counter</title>
    </head>
    <body bgcolor="#000000" font-face="Verdana" text="#FFFFFF">
    
    <?
    if(file_exists("counter.txt") == FALSE)
    {
        $zeiger = fopen("counter.txt", "w");
        fclose($zeiger);
    
        $zeiger = fopen("counter.txt", "r+");
        $zaehler=1;
        echo $zaehler;
        fwrite($zeiger, $zaehler); 
        fclose($zeiger);
    }else
    {
        $zeiger = fopen("counter.txt", "r+");
        $zaehler = fgets($zeiger, 50);
        $zaehler = $zaehler+1;
        echo $zaehler;
        rewind($zeiger);
        fwrite($zeiger, $zaehler); 
        fclose($zeiger);
    }
    
    ?>
    </body>
    </html>
    

    [ Dieser Beitrag wurde am 28.02.2003 um 16:43 Uhr von Peter Piksa editiert. ]



  • Noch zwei kleine Vebesserungsvorschläge: 😉

    Statt

    $zeiger = fopen("counter.txt", "w");
    fclose($zeiger);
    $zeiger = fopen("counter.txt", "r+");
    

    kannst du doch gleich

    $zeiger = fopen("counter.txt", "w+");
    

    schreiben!

    Und

    $zaehler = $zaehler+1;
    

    kannst du kürzer und übersichtlicher so schreiben:

    $zaehler++;
    

    [ Dieser Beitrag wurde am 28.02.2003 um 17:18 Uhr von flenders editiert. ]



  • Oder das ganze gleich so:

    $zaehler = @file_get_contents("counter.txt"); // ein vorangestelltes @ unterdrückt Fehlermeldungen!
    echo $zaehler++; // $zaehler ausgeben und anschließen um 1 erhöhen
    $zeiger = fopen("counter.txt", "w+");
    fwrite($zeiger, $zaehler); 
    fclose($zeiger);
    

    Viel kürzer geht's jetzt glaub ich nicht mehr 😉



  • einziger nachteil bei dem ganzen counter is: er is nicht wirklich fürs internet brauchbar da bei jedem F5 (im IE) oder Strg + R oder Aktuallisieren der counter um eins hoch geht ohne das es wirklich nen neuer user is 😉


Anmelden zum Antworten