Compteur de téléchargement sur lien ?

LolYangccoolLolYangccool Member
juin 2016 modifié dans Entraide
Bonjour,
J'aimerai simplement savoir s'il y a un moyen simple de mettre en place un compteur de téléchargement sur un lien.

J'ai mis une image en téléchargement et j'aimerai savoir combien de personnes l'a téléchargent.
Dans l'idéal, il n'est pas nécessaire que les visiteurs voient le nombre de téléchargement, je n'ai pas envie que des petits malins cliquent dessus 100 fois de suite afin de faire monter le compteur et du coup faussent les résultats. ;)

L'image en question est ici : http://lolyangccool.ovh/telechargez-le-nouveau-fond-d-ecran-de-macos-sierra.html

Merci. :)

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut

    Je t'ai bidouillé un petit script.
    les instructions sont dans le code au début
    <?php
    /**
     * Fichier permettant de télécharger et comptabiliser le nombre de téléchargement d'un fichier
     *
     * @filename	download.php
     * @author	Stephane F
     *
     * @Instructions:
     * - copier le fichier download.php à la racine du site
     * - configurer PATH_FILES avec le chemin contenant les fichiers à télécharger
     * - créer le lien de téléchargement en appelant le script download.php avec en paramètre f = le nom du fichier à télécharger
     *   exemple: download.php?f=fichier.zip
     *   exemple sous forme de lien cliquable: <a href="download.php?f=fichier.zip" title="fichier.zip">fichier.zip</a>
     *   exemple sous forme d'image cliquable: <a href="download.php?f=image.jpg" title="fichier.zip"><img src="data/images/get/image.jpg" /></a>
     *
     * - chaque fichier téléchargeable à son propre fichier de compteur stocké dans le dossier paramétré dans PATH_FILES 
     *   exemple: hits-fichier.zip.txt
     **/
    
    ###### A CONFIGURER #####
    
    # chemin relatif par rapport au fichier download.php (avec un slash / à la fin du chemin)
    define('PATH_FILES', 'data/images/get/'); 
    
    #####################
     
    	/**
    	 * Fonction qui comptabilise le nombre de téléchargements d'un fichier
    	 *
    	 * @param	filename	nom du fichier des hits
    	 * @author	Stephane
    	 **/
    	function hitsCounter($filename) {
    		$counter=0;
    		if(@file_exists($filename)) {
    			$f = @fopen($filename, "r");
    			@flock($f, LOCK_EX); //lock the file
    			$counter = intval(@fgets($f)); 
    			@fclose($f);
    		}
    		$f = @fopen($filename, "w");
    		@flock($f, LOCK_EX); //lock the file
    		@fwrite($f, $counter+1);
    		@fclose($f);
    	}
    
    	// Récupération du chemin du fichier à télécharger
    	$file = (isset($_GET['f']) AND !empty($_GET['f'])) ? $_GET['f'] : '';
    	$file = PATH_FILES.$file;
    	if(file_exists($file) AND (substr(basename($file), 0, 4)!='hits') AND preg_match('#^'.str_replace('\\', '/', realpath(PATH_FILES).'#'), str_replace('\\', '/', realpath($file)))) {
    	
    		// Mise à jour du compteur de téléchargement du fichier
    		hitsCounter(PATH_FILES.'hits-'.basename($file).'.txt');
    	
    		// envoi du fichier à l'utilisateur
    		header('Content-Description: File Transfer');
    		header('Content-Type: application/download');
    		header('Content-Disposition: attachment; filename='.basename($file));
    		header('Content-Transfer-Encoding: binary');
    		header('Expires: 0');
    		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    		header('Pragma: no-cache');
    		header('Content-Length: '.filesize($file));
    		readfile($file);
    		exit;
    	}
    ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Génial, super, fantastique ! Merci beaucoup ! :)
    Il faudrait presque en faire un plugin pour pouvoir lire les résultats directement dans l'admin de pluxml et ainsi ne pas devoir se connecter en FTP au serveur. :)
  • chrisschriss Member
    Bonjour,
    LolYangccool a écrit:
    Génial, super, fantastique ! Merci beaucoup ! :)
    Il faudrait presque en faire un plugin pour pouvoir lire les résultats directement dans l'admin de pluxml et ainsi ne pas devoir se connecter en FTP au serveur. :)

    Existe déjà http://forum.pluxml.org/viewtopic.php?id=4606
  • StéphaneStéphane Member, Former PluXml Project Manager
    ho genial, il m'avait échappé ce plugin
    merci chriss pour le rappel

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.