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 -
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.
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:
- Pourquoi le compteur ajoute 2 à chaque exécution?
- Compteur électrique - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- 2 ecran pc - Guide
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
2 réponses
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é.
<?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é.