Compteur de téléchargement: où est l'erreur?

Fermé
octani Messages postés 22 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 28 juillet 2013 - 3 juin 2013 à 21:28
octani Messages postés 22 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 28 juillet 2013 - 4 juin 2013 à 20:03
Bonjour,
Je débutais avec un petit script php comme suivant:
j'ai crée une page download.php, quand on clique sur un lien de téléchargement le code s'exécute et incrémente le nombre de téléchargement du fichier dans un fichier texte data.txt: on y ecrit $count:::$file.
le code est:
<?php
$data = "data.txt";
$file=$_POST['file']; //nom du fichier à télécharger
$filename="files/$file";
$fp = fopen($data,"r+") or die("impossible..."); //ouvrir data.
txt
$fpc = file_get_contents($fp); // récupérer son contenu
if(strpos($fpc, $file)!== false) { // si data.txt contient le nom du fichier on modifie son count en lui ajoutant 1 ( ici mon problème..)
$content = fread($fpc,filesize($data));
$content = str_replace($count, $count+1, $content);


fseek($f,0); 
fputs($fp,$content."\n");
 
fclose($fp);
}
else{ // si le nom du fichier n'est pas inclus on l'écrit et le count=1
$fp = fopen($data,"r+");

$count=1;
$content=$count." :: ".$file."\n";
fseek($f,0); 
fputs($fp,$content);
	 
fclose($fp);
}
// 
ici le code du téléchargement;
//
exit;


le téléchargement se déroule sans problème, sans aucune écriture dans data.txt sauf un 1!
J'attend vos aides avec remerciements .
Merci d'avance.


A voir également:

2 réponses

Utilisateur anonyme
4 juin 2013 à 15:29
Salut salut,

J'ai noté quelques petites choses bizarre dans le code :
$fpc = file_get_contents($fp);

Ici tu passes en paramètre la variable issue du fopen, or la fonction file_get_contents prend un chemin en paramètre, as tu vérifie le retour que tu avais dans la variable $fpc? Je pense qu'il est NULL.
Dans ton cas fais plutôt :
$fpc = file_get_contents($data);
$data étant le chemin du fichier.

$fpc sera donc une chaine String, pour vérifier la présence d'une chaine et mettre à jour le compteur, j'aurais fais qqch comme ça :

$tab_content=explode("\n",$fpc);
//On obtient un tableau avec une ligne par indice


Avec ensuite une boucle qui vérifie ligne par ligne la présence ou non de la chaine dans le tableau $tab_content en mettant à jour le paramètre.

Il y a peut être mieux mais je trouve que c'est le plus intuitif.
0
octani Messages postés 22 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 28 juillet 2013
Modifié par octani le 4/06/2013 à 20:05
Merci bien kyser soze , de me répondre.
j'ai rectifié mon code comme suit:
<?php
$data = "data.txt";
$file=$_POST['file'];
$filename="files/$file";
$fpc = file_get_contents($data); 
if(!strpos($fpc, $file)!== false) {
$tab_content=explode("\n",$fpc);
$tab_content[0]++;
$content=$tab_content[0]." :: ".$tab_content[1];
fputs($fpc,$content);
fseek($fpc,0); 
fputs($fpc,$content."\n");
fclose($fpc);
}
else{
$fp = fopen($data,"r+");
$count=1;
$content=$count." :: ".$file."\n";
fseek($fp,0); 
fputs($fp,$content);
  
fclose($fp);
}
...
?>

Mais l'écriture ne se fait plus dans data.txt.
le code ( $file=$_POST['file'] ) est-t-il juste ?
c'est pour récupérer la valeur d'un input radio d'une autre page contenant un form:
<form action ="telecharge.php" method= "post">
<input type="radio" name="file" value="pain.pdf">pdf<br>
<input type="radio" name="file" value="viande.doc">doc<br>
<input type="radio" name="file" value="poisson.zip">zip<br>
<input name="submit" type="submit" value="télécharger vite!"/>
Merci de m'aider.
0