Compteur de clic sans BDD

Mammouth du PHP | 686 Messages

24 mars 2007, 21:33

Bonjour je voudrai savoir comment coder un script PHP qui, sans base de donnée, nous donne le nombre de fois que l'on a cliqué sur un lien (compteur de visite sur ce lien). Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 mars 2007, 00:11


/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 686 Messages

25 mars 2007, 00:25

Merci, je pense que ca devrai beaucoup m'aider. Je pense qu'il y a moyen d'adpter ces code de compteurs de visites en compteurs de click.

Dites moi votre avis : Je veux faire un lien vers un site et afficher le nombre de clic vers ce lien. si le lien est du genre http://monsite/compteur.php?id=iddusite
et que la page compteur contient la fonction compteur de visite puis redirection vers le site ca devrai marcher ?

Mammouth du PHP | 686 Messages

25 mars 2007, 02:02

C'est bon ca marche sauf que j'ai un probleme ... j'ai un compteur anarchiste ... il m'affiche 2 visites, puis 13, puis 1214 ... et j'ai voulu configurer mon fichier compteur.php pour qu'il redirige vers l'url qui lui a été envoyé mais rien ne se passe .... je comprend vraiment plus rien ... je doit avoir les neurones ramolits ! :D
<?php
$url = $_GET['url'];
$cpt = $_GET['cpt'];
$fp = fopen("$cpt.txt","w+"); 
$nb_visites = fgets ($fp); 
// Instruction 3  
$nb_visites = $nb_visites + 1; 
// Instruction 4 
fseek ($fp, 0); 
// Instruction 5 
fputs ($fp, $nb_visites); 
// Instrcution 6 
fclose ($fp);
header(
 "Location: $url");
exit(); 
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 mars 2007, 04:43

$fp = fopen("$cpt.txt","w+");
un petit "$" de trop.

Pour la redirection essaie sur une ligne :
header("Location: ".$url);

Tu devrais vérifier les données reçue de l'URL avant de t'en servir :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 686 Messages

25 mars 2007, 13:47

Merci pour le tuyau de l'URL mais pour mon problème de compteur je voi pas ou ya le $ de trop, le code que tu as mis est le même que le mien ...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 mars 2007, 14:05

Ben oui :lol:
j'ai pas corrigé :wink:
$fp = fopen("cpt.txt","w+");

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 686 Messages

25 mars 2007, 14:34

a ok .. chu un peu gogol ... lol mais le truc c'est que mon fichier ne s'appel pas cpt.txt mais $cpt.txt (avec $cpt ma variable) car le lien vers mon fichier est du genre compteur.php?cpt=08786&url=http://lesite.truc
Modifié en dernier par sylvaing26 le 25 mars 2007, 14:38, modifié 1 fois.

Mammouth du PHP | 686 Messages

25 mars 2007, 14:36

En fait le truc c'est qu'il ecrit bien dans mon fichier texte mais au lieu de rajouter un visiteur a chaque fois il me met des chiffres zarb (0 puis 2 puis 13, puis 1214 etc ....) dans je me demande si ca vien pas de cette partie du code
$nb_visites = fgets ($fp);  
// Instruction 3   
$nb_visites = $nb_visites + 1;  
// Instruction 4  
fseek ($fp, 0);  
// Instruction 5  
fputs ($fp, $nb_visites);  

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 mars 2007, 15:42

Dans ce cas :
$fp = fopen($cpt.".txt","w+"); 
$nb_visites = fgets ($fp); 
// Instruction 3  
$nb_visites = $nb_visites + 1; 
// Instruction 5 
fputs ($fp, $nb_visites); 
// Instrcution 6 
fclose ($fp); 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 686 Messages

25 mars 2007, 20:00

C'est bon en fait, j'ai réadapté tout ca, mon code final pour le compteur est donc :
<?php
$url = $_GET['url'];
$cpt = $_GET['cpt'];
$fichier="$cpt.txt";

// Lecture du fichier s'il existe et incrémente
$cpt = 1;
if(file_exists($fichier)) {
   $inF = fopen($fichier,"r");
   $cpt = intval(trim(fgets($inF, 4096))) + 1; 
   fclose($inF); 
}

// Sauvegarde du compteur
$inF = fopen($fichier,"w");
fputs($inF,$cpt."\n"); 
fclose($inF);
?>
et pour le problème de redirection c'est que en fait je ne savait pas quel la fonction header() devait être placée avant toutes les autres balises du code

Merci quand même