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

watted
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 20:20

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

Mammouth du PHP | 1776 Messages

07 nov. 2005, 20:26

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é !

watted
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 21:09

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

watted
Invité n'ayant pas de compte PHPfrance

07 nov. 2005, 21:18

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.

Eléphant du PHP | 55 Messages

07 nov. 2005, 23:12

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.
Image

Mammouth du PHP | 1776 Messages

08 nov. 2005, 00:00

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:

Eléphant du PHP | 55 Messages

08 nov. 2005, 00:35

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:
Image

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 nov. 2005, 11:26

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);

ViPHP
ViPHP | 656 Messages

08 nov. 2005, 20:30

Evite aussi de montrer ton compteur sur le site, car nombreux vont êtres ceux qui feront des refresh pour incrémenter le compteur volontairement.

watted
Invité n'ayant pas de compte PHPfrance

09 nov. 2005, 17:03

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. ???

watted
Invité n'ayant pas de compte PHPfrance

09 nov. 2005, 17:05

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";
?>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 nov. 2005, 17:10

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

watted
Invité n'ayant pas de compte PHPfrance

09 nov. 2005, 17:29

je viens d'effectuer les modifs et tjs le même problèm... :tir2:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

09 nov. 2005, 18:17

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
Modifié en dernier par sadeq le 09 nov. 2005, 18:44, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

watted
Invité n'ayant pas de compte PHPfrance

09 nov. 2005, 18:30

Super sadeq, ton truc marche vraiment bien mais j'aimerais intégrer une redirection quand $cpt >=4 c'est quoi le code ? Merci