Page 1 sur 2

création d'un compteur assez spéciale...

Posté : 07 nov. 2005, 20:20
par watted
Bonjour a tous,
Voilà comme indiqué dans le titre, je fais appel à vous car je n'arrive pas à trouver ce que je veux.
En fait j'aimerais un compteur tout simple plutôt un compteur texte. Bon jusque là pas de problème.
Mais j'aimerais que le compteur se remette à zéro au bout d'un certain nombre par exemple prenons 500. Dès que le compteur arrive à 500 celui-ci se remet à zéro automatiquement. Mais il y a autre chose (eh oui!) dès que le compteur atteind 500, j'aimerais que le visiteur soit redirigé sur une page. Voilà si quelqu'un aurait la solution... Merci

Posté : 07 nov. 2005, 20:26
par DocType
avec un settimeout et une ch'tite fonction d'incrementation...le tout avec un innerHTML pour afficher le temps restant...

Note: côté javascript, ce n'est pas securisé !

re

Posté : 07 nov. 2005, 21:09
par watted
Euh... oui, c'est pas trop évident dis comme ça. Mais le settimout c'est pour une durée, pour mon compteur ce serait pluto une valeur qu'il me faudrait, en locurence 500 dans mon exemple

re

Posté : 07 nov. 2005, 21:18
par watted
En fait je me suis mal expliqué, le 500 correspond au 500ème visiteur. Mon compteur est en fait un compteur de visites qui se remet à 0 au bout du 500ème visiteur et ce 500ème visiteur est redirigé vers une autre page.

Re: re

Posté : 07 nov. 2005, 23:12
par Chamsou
ce 500ème visiteur est redirigé vers une autre page.
:) donc c'est comme si il y avait un bonus spécial pour chaque visiteur qui auré la chance d'etre le cinq centième !
Note: côté javascript, ce n'est pas securisé !
c'est vrai le code sera visible et si une personne regard le code puis surveille le fichier .txt :? il pourra facilement tricher en allant sur la page que quand il voi que la valeur arrive a 499 ;) Bref pas tres discret tout sa !
Mais bon on est sur un forum php alors pourquoi pas faire sa en php ? sa serai mieu non.

Re: re

Posté : 08 nov. 2005, 00:00
par DocType
c'est vrai le code sera visible et si une personne regard le code puis surveille le fichier .txt :?
Mais bon on est sur un forum php alors pourquoi pas faire sa en php ? sa serai mieu non.
lol, quel fichier texte ?
Comme tu dis, PHP est là pour lui :wink:
J'invite donc l'auteur à reposter ce topic dans la section PHP, en demandant une solution PHP :wink:

Re: re

Posté : 08 nov. 2005, 00:35
par Chamsou
lol, quel fichier texte ?
:lol: je le voi mal stoquer dans une base de donnée MySQL un compteur géré via javascript !
mais bon "Impossible is nothing"
j'ai juste penser que son compteur serai stoquer dans un fichier .txt meme si sa ne semble pas etre précisé :oops:

Posté : 08 nov. 2005, 11:26
par albat
en PHP (sujet déplacé pour l'occasion)
$fichier = fopen("fichier.txt","r+");                                                     
$visites = fgets($fichier,255);
if ($visites==499)
   $visites=0
   else
   $visites++;
fseek($fichier,0);
fputs($fichier,$visites);
fclose($fichier);

Posté : 08 nov. 2005, 20:30
par Ultiny
Evite aussi de montrer ton compteur sur le site, car nombreux vont êtres ceux qui feront des refresh pour incrémenter le compteur volontairement.

re

Posté : 09 nov. 2005, 17:03
par watted
Merci à albat pour son code php ça fonctionne maintenant enfin presque...
J'ai pris 19 au lieu de 499 pr plus de facilités
Le compteur se remet à zéro au bout de 19 comme prévu mais dès que celui arrive à 2 au lieu de marquer "2" il marque "11" comme si les visites au lieu de s'ajouter 1+1 s'écrivait les unes à coté des autres : 11. Seulement après 11 tout est normal 12,13... c'est la passage du 1 au 2 qui est bizar. ???

re

Posté : 09 nov. 2005, 17:05
par watted
Voilà mon code :

<?PHP

$fichier="compteur.txt";
$fp=fopen("$fichier","r+");
$cpt=fgets($fp,255);
if($cpt=="19")
{
$cpt=1;}
else
$cpt++;
fseek($fp,0);
fputs($fp,$cpt);
fclose($fp);
echo "Nombre de visites: $cpt";
?>

Re: re

Posté : 09 nov. 2005, 17:10
par albat
Normal. Il y a 2 erreurs dans ton code :
$fichier="compteur.txt";
$fp=fopen($fichier,"r+"); // supprime les guillemets autour de ta variable
$cpt=fgets($fp,255);
if($cpt==19) // supprime les guillemets autour de la valeur numérique
$cpt=1;
else 
$cpt++;
fseek($fp,0); 
fputs($fp,$cpt); 
fclose($fp);
echo "Nombre de visites:".$cpt; // sors les variables des chaines de caractères

Posté : 09 nov. 2005, 17:29
par watted
je viens d'effectuer les modifs et tjs le même problèm... :tir2:

Posté : 09 nov. 2005, 18:17
par sadeq
Et qu'es ce t'en dis de mon oeuvre :
<?PHP 
//Vérif et init
if (!file_exists("compteur.txt")) {
	$fp=fopen("compteur.txt","w");
	fwrite($fp,0);  
	fclose($fp);
}

//Lecture de l'existant'
$fp=fopen("compteur.txt","r");
$cpt = fgets($fp);
fclose($fp);

//Correction 
if(empty($cpt) || !is_numeric($cpt) || $cpt <= 0) $cpt=1;

 //supplément: renvoi vers une autre page si >4
if ($cpt >= 4)  {
            maj (1); 
            echo "<script> window.location.href='sucette.php';</script>";
			exit();
}        
else 
   //incrémentation
   $cpt++;

//Mise à jour   
maj($cpt);


//Affichage
echo "Nombre de visites: $cpt";

//Mise à jour
function maj($cpt) {
$fp=fopen("compteur.txt","w");
fwrite($fp,$cpt);  
fclose($fp);
}
?>
Il vérifie, récupère, corrige, incrémente, et met à jour. :wink:
et en plus renvoi l'utilisateur vers une autre page si > à 4 visites

re

Posté : 09 nov. 2005, 18:30
par watted
Super sadeq, ton truc marche vraiment bien mais j'aimerais intégrer une redirection quand $cpt >=4 c'est quoi le code ? Merci