Aide en PHP

Fermé
steph2611 Messages postés 209 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 24 août 2018 - 14 avril 2009 à 11:27
penegal Messages postés 318 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 31 janvier 2014 - 19 juil. 2009 à 19:46
Bonjour,

Je recherche quelqu'un qui pourrait m'aider à ecrire le code PHP pour calculer le nombre de téléchargement d'un fichier sur mon serveur web.

j'ai essayé en m'aidant du site du zero, mais je comprends pas.

Si quelqu'un connait très bien le PHP, et qu'il peut me donner un coup de main en m'ecrivant le code d'apres les données que je lui donnerai ce serait super sympa à lui.

merci d'avance
A voir également:

11 réponses

penegal Messages postés 318 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 31 janvier 2014 27
14 avril 2009 à 15:13
facile...n tu crée une base mySQL et a chaque fois que quelqu'un clique dessus, il y a une auto incrémentation de 1 ==> tu fais une simple requête pour voir le nombre dans la page et le tour est joué ^^

Voila, maintenant tu connais la technique, il te suffit plus que de le coder ^^
0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
14 avril 2009 à 15:35
Salut,
Pas besoin de BDD tu peux stoker le nombre de téléchargment dans un petit fichier (ex nb.txt).
Voilà un petit code :
if(file_exists("nb.txt")){$nb_down=file_get_contents("nb.txt");}else{$nb_down=0;}//On recupère le nombre si le fichier n'existe pas on met $nb_down à 0
$f=fopen("nb.txt", "w+");//On ouvre et on vide le fichier avec w+ si le fichier n'existe pas il est créé
$nb_down++; //On incrémente le nombre de téléchargements
echo $nb_down; //On l'affiche
fwrite($f, $nb_down); //On l'incrit de la fichier nb.txt
fclose($f); //On ferme le fichier


Normalement ce code fonctionne. Tu peux le mettre dans un page de redirection vers le fichier.
Voilà un exemple :
<? 
if(file_exists("nb.txt")){$nb_down=file_get_contents("nb.txt");}else{$nb_down=0;}//On recupère le nombre si le fichier n'existe pas on met $nb_down à 0
$f=fopen("nb.txt", "w+");//On ouvre et on vide le fichier avec w+ si le fichier n'existe pas il est créé
$nb_down++; //On incrémente le nombre de téléchargements
fwrite($f, $nb_down); //On l'incrit de la fichier nb.txt
fclose($f); //On ferme le fichier
header('location: http://monsite.com/mon_ficher_a_telecharger.doc'); ?>
0
steph2611 Messages postés 209 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 24 août 2018 31
14 avril 2009 à 16:59
Merci Penegal, mais jusqtement je ne sais pas codé :(

Par contre , ta solution benvii à l'air pratique est simple ... Juste pour savoir, le fichier nb.txt je le met où ? et le 1er code je le met dans quel fichier et où?

pareil pour le second code ?

Désolé des questions mais je suis un peu novice là dedans ...
merci encore
0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
14 avril 2009 à 17:26
Prenons un exemple :
Nous sommes dans le dossier dir de monsite.com c'est à dire dans http://monsite.com/dir/ le fichier à télécharger ce nomme C.doc et est dans dir.
J'ai un script A.php dans ce script j'ai le code de ma page HTML qui présente le fichier à télécharger. Dans ce même script (A.php) j'ai un lien vers le script B.php.
Le script B.php est une redirection vers C.doc, ce script (B.php) vas aussi comptabiliser le nombre de fois ou on le charge donc le nombre de redirections et par conséquent le nombre de fois ou on a téléchargé le fichier C.doc.

C'est dans B.php que tu mets ceci :

<? 
if(file_exists("nb.txt")){$nb_down=file_get_contents("nb.txt");}else{$nb_down=0;}//On recupère le nombre si le fichier n'existe pas on met $nb_down à 0
$f=fopen("nb.txt", "w+");//On ouvre et on vide le fichier avec w+ si le fichier n'existe pas il est créé
$nb_down++; //On incrémente le nombre de téléchargements
fwrite($f, $nb_down); //On l'incrit de la fichier nb.txt
fclose($f); //On ferme le fichier
header('location: http://monsite.com/dir/C.doc'); ?>


On résume : A.php (script ou j'ai le lien pour télécharger C.doc) quand je clique sur http://monsite.com/dir/B.php -> B.php comptabilise (il ajoute 1 à http://monsite.com/dir/nb.txt) puis me redirige vers C.doc -> C.doc je télécharge le fichier.

On peut imager en disant que B.php est un compteur qui compte toutes les personnes qui passent par lui pour arriver à C.doc et enregistre ce nombre dans nb.txt.

Si tu veux afficher le nombre de téléchargement tu mets ceci si tu es dans dir : <? echo file_get_contents("nb.txt"); ?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steph2611 Messages postés 209 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 24 août 2018 31
14 avril 2009 à 19:06
Re,

Merci de cette explication qui m'a l'air très claire sur le papier, faut juste que j'arrive à l'appliquer maintenant ;-) Je ferai ca demain, je n'ai pas accès à mon site ce soir ...

Petite question subsidiaire : Quelque soit le moyen de téléchargement, il va compter ??
C'est à dire que en gros j'ai 3 fichiers à télécharger : 2 qui se feront par un mail et qui sera envoyer sous forme de lien du style : http;//monsite.com/profiles/fichier1.exe et fichier2.exe => ca il le comptera on est d'accord ?

mais j'ai un troisieme fichier qui se téléchargera via une application c'est donc un soft qui va aller chercher le .exe ... Ca comptera aussi ?

Merci encore et je te tiens informé de mon avancé dans ce qui est pour moi un exploit si je le mets en place ... :-)
0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
14 avril 2009 à 21:15
Dans aucun de tes exemples ça comptera. Dans le système que je te présente tu dois passer par un fichier .php qui ensuite rendirige vers le fichier à télécharger ceci ne fonctionne qu'avec un navigateur web.
Néanmoins, je pense que tu as certainement accès aux log (logs apache) avec ton hébergeur et là (avec ces logs) tu pourras voire tout ce qui a été téléchargé sur ton serveur.

La solution que je te propose n'est pas adapté à ton problème, il existe d'autre solutions qui seraient plus adaptées mais elles sont beaucoup plus complexes car il faut manipuler les headers (Content-Type) pour simuler la présence d'un fichier avec un script PHP.
La seule solution simple c'est les logs de ton serveur renseigne toi auprès de ton hébergeur pour savoir comment tu peux y avoir accès.
0
steph2611 Messages postés 209 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 24 août 2018 31
15 avril 2009 à 09:01
Ok, merci Benvii ...

Mais le serveur c'est moi le gère , les logs j'y ai accès sans soucis ... c'est un serveur sous debian , donc dans le dossier /var/log/apache2

As tu quelquechose pour moi ? un soft qui analyse ces logs ou toute autres manières ?

Effectivement quand je regarde ces logs je vois bien mes fichiers que je télécharge , date et tout plein de trucs

merci
0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
15 avril 2009 à 10:16
Il existe certainement des outils d'analyse des log qui te permettent de voire combien de fois a été téléchargé ton fichier. Je n'en connais aucun pour l'instant.
0
penegal Messages postés 318 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 31 janvier 2014 27
19 juil. 2009 à 18:40
tu fais un script simple qui crée des dossiers... et a chaque dl un dossier de plus se crée ^^

(pas pratique =( )


++
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
19 juil. 2009 à 19:15
Bonsoir,
pourquoi ne pas écrire un script php qui lit le fichier log et qui créée un tableau de comptage ....
0
penegal Messages postés 318 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 31 janvier 2014 27
19 juil. 2009 à 19:46
on peut
ou une base mysql qui incrémente la valeur de 1 a chaque dl ...
0