- Home
- Categorie
- Coding e Sistemistica
- PHP
- Contatore accessi in PHP che non vuole funzionare
-
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 .txtEcco 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
-
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!
-
Ecco 2 errori:
<$php invece che <?php
e (non sono sicuro che sia un errore)$count+=1; invece che $count=+1;
-
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 ?>
-
Provato, fatto tutte le correzioni indicate, ma niente da fare,
i file sono tre:
contaccessi.php
provacontatore.html
contaccessi.txtlo 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.
-
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.
-
Il dubbio mi rimane: provacontatore.html com'è collegato a contaccessi.php? Con l'include suggerito da ilnetsurfer?
-
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