• User Newbie

    Tentativo di creare un counter

    ciao. Sto provando (essendo alle primisse armi in php) a creare un counter (mi serve per un sito) però non riesco ad andarcene fuori..

    Inizialmente avevo scritto:
    [php]
    <?php
    $filename = "/htdocs/public/www/test/numero.txt";
    $fp = fopen($filename, "w+");
    $conteggio = fread($fp, filesize($filename));
    $conteggio++;
    $fout = fwrite($fp, $conteggio);
    fclose($fp);

    mail("[email protected]",'test counter',$conteggio);
    ?>
    [/php]Ma continuava a darmi il seguente errore:

    Warning: fread() [function.fread]: Length parameter must be greater than 0
    ho risolto semplicemente mettendo a mano la lunghezza del file (2 perchè tanto il file è di 1 byte.. era un txt contenente soltanto un "0" ).

    Quindi:
    [php]
    <?php
    $filename = "/htdocs/public/www/test/numero.txt";
    $fp = fopen($filename, "w+");
    $conteggio = fread($fp, "2");
    $conteggio++;
    $fout = fwrite($fp, $conteggio);
    fclose($fp);

    mail("[email protected]",'test counter',$conteggio);
    ?>
    [/php]la prima email mi è arrivata giusta, contenente "1" (il file di partenza conteneva "0")
    Ma tutte le successive, mi arrivano tutte con "1" come testo 😕 non incrementa!

    Avete qualche idea?

    grazie


  • ModSenior

    Ciao loverdrive,
    invece di fread, puoi usare file_get_contents.
    Devi comunque verificare se $conteggio++; si comporta come ti aspetti, in quanto sicuramente dovresti fare il casting e passare $conteggio a tipo int.


  • User Newbie

    @Thedarkita said:

    Ciao loverdrive,
    invece di fread, puoi usare file_get_contents.
    Devi comunque verificare se $conteggio++; si comporta come ti aspetti, in quanto sicuramente dovresti fare il casting e passare $conteggio a tipo int.

    ma il casting dovrei farlo ogni volta? non si può trattare quel dato soltanto come intero e non come stringa?


  • ModSenior

    Ogni volta che leggi dal file dovresti farlo nel tuo caso.