• User

    Contatore accessi in PHP che non vuole funzionare

    Buongiorno, sono nuovo di queste parti, ieri sera stravo scrivendo, con molti sforzi un contatore in PHP che non incrementa le visite se si è già visitata la pagina nell'arco delle 24 ore, peccato che non va.
    Oltre al codice che vi pongo c'è da inserire nella root anche un file di testo con estensione .txt

    Ecco il codice PHP
    <$php
    //dichiarazione variabili, il contatore memorizza in un file esterno senza incrementare rilasciando un ccokie
    $file="contaccessi.txt";
    $EXPIRE_DATE = 86400; //24 ore = un giorno
    setcookie("jojo","ziopino",time()+$EXPIRE_DATE);
    $incrementa=true;
    //se esiste il cOokie non si deve incrementare il contatore
    if (isset($HTTP_COOKIE_VARS))
    {
    while(list($nome,$valore)=each($HTTP_COOKIE_VARS))
    {
    if(($nome == "jojo") && ($valore == "ziopino"))
    $incrementa = false;
    }
    }
    //il terzo segmento legge, incrementa e salva il conteggio
    if (file_exists($file))
    { //apre , legge , incrementa e salva il file
    $fp=fopen("$file","r+");
    flock($fp, LOCK_EX);
    $count = fgets($fp,4096);
    if ($incrementa==true)
    {
    $count+=1;
    fseek($fp,0);
    $fputs($fp, LUCK_UN);
    fclose($fp);
    }
    }
    else
    { //visualizza un mesaggio se il file non esiste
    echo "File non esistente check '$file'....<BR>";
    }
    ?>

    Adesso il codice HTML con il quale faccio la prova per vedere se funziona:
    <html><head>
    <title>Contatore accessi con COOKIE</TITLE></HEAD>
    <BODY BGCOLOR="WHITE">
    <BR><BR>
    <P ALIGN="CENTER">
    <FONT FACE="ARIAL, HELVETICA" SIZE="+2" COLOR="#336699" >
    <STRONG>
    <EM>ESEMPIO DI CONTATORE CON COOKIE</EM>
    </STRONG></FONT></P><BR>
    <CENTER><B>NUMERO DI VISITATORI :
    <?php echo $count ?>
    </B></CENTER>
    <CENTER><BR><BR>
    <FONT FACE="ARIAL, HELVETICA" SIZE="-2"><EM>@ Copyright 2004</EM></FONT>
    </CENTER>
    </BODY>
    </HTML>

    Aggiungo nella cartella anche il file .txt e poi lo provo su server, ma non va.

    Chi ha idea del perchè

    Grazie mille.:x


  • User Attivo

    Ciao ricca33 e benvenuto sul forum GT,
    purtroppo senza una descrizione dell'errore aiutarti non è facile... che errore ti da?

    Da quanto hai scritto mi viene un dubbio: il codice php che hai postato, l'hai inserito nella pagina html di prova, subito prima della pirma riga?

    In caso affermativo il file .txt è scrivibile?

    Hai provato a vedere se il cookie viene correttamente lasciato?

    Facci sapere!
    :ciauz:


  • User Attivo

    Ecco 2 errori:
    <$php invece che <?php
    e (non sono sicuro che sia un errore)

    $count+=1; invece che $count=+1;


  • User Attivo

    Aggiungo un altro errore che mi sono dimenticatyo di scrivere:
    Nel file html, hai scritto la seguente riga:

    <?php echo $count ?>

    Solo che non hai specificao che deve includere il file php, altrimenti la variabile risulta introvabile.Quindi:
    <?php require ("contatoreaccessi.php");>
    e dopo scrivi:

    <?php echo $count ?>


  • User

    Provato, fatto tutte le correzioni indicate, ma niente da fare,
    i file sono tre:
    contaccessi.php
    provacontatore.html
    contaccessi.txt

    lo script lo sto provando in locale con easyphp, più tardi lo provo su server cambiando i permessi del .txt, ma non in locale come si cambiando perchè uso windows e non linux. Comunque non da errore, l'unica cosa è che non ne esce nulla senza errori.

    Qualche altra indicazione? Grazie e ciao.


  • User Attivo

    Prova con
    <?php include ("contaccessi.php")>

    Poi, prova a spedire il tutto su server web(easyphp a volte combina problemi) impostando i permeessi chmod su 777 con il tuo ftp.


  • User Attivo

    Il dubbio mi rimane: provacontatore.html com'è collegato a contaccessi.php? Con l'include suggerito da ilnetsurfer?


  • User Attivo

    Codice php di contaccessi modificato

    [php]<?php
    //dichiarazione variabili, il contatore memorizza in un file esterno senza incrementare rilasciando un ccokie
    $file="contaccessi.txt";
    $EXPIRE_DATE = 86400; //24 ore = un giorno
    setcookie("jojo","ziopino",time()+$EXPIRE_DATE);
    $incrementa=true;
    //se esiste il cOokie non si deve incrementare il contatore
    if (isset($HTTP_COOKIE_VARS))
    {
    while(list($nome,$valore)=each($HTTP_COOKIE_VARS))
    {
    if(($nome == "jojo") && ($valore == "ziopino"))
    $incrementa = false;
    }
    }
    //il terzo segmento legge, incrementa e salva il conteggio
    if (file_exists($file))
    { //apre , legge , incrementa e salva il file
    $fp=fopen("$file","r+");
    flock($fp, LOCK_EX);
    $count = fgets($fp,4096);
    if ($incrementa==true)
    {
    $count="+1";
    fseek($fp,0);
    $fputs($fp, LUCK_UN);
    fclose($fp);
    }
    }
    else
    { //visualizza un mesaggio se il file non esiste
    echo "File non esistente check '$file'....<BR>";
    }
    ?>[/php]

    contatore.php(contaccessi.html contiene codice php, quindi deve essere rinominato

    [html]<html><head>
    <title>Contatore accessi con COOKIE</TITLE>
    <?php include("contaccessi.php");
    ?>
    </HEAD>
    <BODY BGCOLOR="WHITE">
    <BR><BR>
    <P ALIGN="CENTER">
    <FONT FACE="ARIAL, HELVETICA" SIZE="+2" COLOR="#336699" >
    <STRONG>
    <EM>ESEMPIO DI CONTATORE CON COOKIE</EM>
    </STRONG></FONT></P><BR>
    <CENTER><B>NUMERO DI VISITATORI :
    <?php
    echo $count;
    ?>
    </B></CENTER>
    <CENTER><BR><BR>
    <FONT FACE="ARIAL, HELVETICA" SIZE="-2"><EM>@ Copyright 2004</EM></FONT>
    </CENTER>
    </BODY>
    </HTML>
    [/html]

    invia tutti i file(compreso contaccessi.txt) al tuo spazio con l'ftp al 777