Pourquoi le compteur ajoute 2 à chaque exécution?

Résolu
octani Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
octani Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Sur le net j'ai trouvé un petit code php:
- une page.php avec:
<form action ="download.php" method= "post">
<input type="radio" name="file" value="file1.pdf">file1<br>
<input type="radio" name="file" value="file2.pdf">file2<br>
<input name="submit" type="submit" value="Download"/>
- la page download.php contient le code suivant:
<code>
<?php
if(!file_exists("counter.txt")) {
die("Unable to open the counter.txt file! Please create it and set correct permissions.<br>");
} else{
$file1 = fopen("counter.txt", "r");
$num = fgets($file1,4096);
$num += 1;
fclose($file1);
$file2 = fopen("counter.txt", "w");
fputs($file2, $num);
fclose($file2);
}
echo "Thank you for downloading a file there are " . $num ." ". "no. downloads ";
$file = $_POST['file'];
$filename="files/$file";
if( $file == "" )
{ echo "<html><title>No file has been found</title></body></html>";
exit;
} elseif ( ! file_exists( $filename ) )
{
echo "<html><title>please choose a file to Download</title><body>";
exit;
};
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
readfile("$filename");
exit();

Problème:
le code incrémente dans counter.txt un ajout double 2 , 4 , 6 , 8 ...!
Selon moi je crois que la partie du téléchargement du code header... exécute tout le code une deuxième fois! est ce que c'est vrai?
Merci de m'aider à résoudre le problème.
A voir également:

2 réponses

octani Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Voila j'ai passé des heurs étant débutant, pour corriger mon code si dessus; l'erreur provient de l'existence du fichier à télécharger, même s'il existe il faut ajouter un if comme suit:

<?php
$file_name = $_POST['filename'];
//hits
$name=basename($file_name );
if(file_exists("files/$file_name")){
if(!file_exists("stat/$name.txt")){
$f1 = fopen("stat/$name.txt", "w");
fputs($f1,0);
fclose($f1);
}

if(file_exists("stat/$name.txt")){
$f2=fopen("stat/$name.txt","r+");
$nb=fgets($f2,10);
$nb+=1;
fseek($f2,0);
fputs($f2,$nb);
//$c=fread($f2,$nb);
fclose($f2);
}
}
.............
?>
il ne reste qu'améliorer le code en cas de l'inexistence du fichier à télécharger, et d'exclure les fichiers d'extension comme php html txt ... pour sécurité.
0
Profil bloqué
 
Je rappelle que on ne doit pas parler de Hacking ou autre outil dans ce forum .
-2
octani Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Où est le hacking = piratage !! dans un petit code banal de compteur de téléchargements ??
Si c'est du hacking, où est l'erreur dans le code? C'est facile pour une personne qui comprend bien du hacking !
0