Téléchargement de fichiers zip avec compteur

Vous désirez mettre à disposition sur votre site des fichiers zip à télécharger et compter le nombre de téléchargements effectués, ce script est fait pour vous.

Table SQL donnée en exemple.

Le principe est simple, mettez la premiere partie du code dans votre fichier principal, puis créer un fichier "inc_telecharger.php" et mettez y la seconde partie du code.

Le fichier "inc_telecharger.php" est completement transparant, comme il ne comporte pas de HTML, il ne sera pas chargé dans le cache du navigateur, il restera coté serveur et executera la mise à jour + le lancement du téléchargement.


Information sur les mises à jour

Dernière mise à jour :

22 Sept 2019
refactoring du code en PHP 7
fonctionnement du code vérifié

24 946  vues
Compatibilité du code
PHP 5, PHP 7 et PHP 8
  code classé dans   Fichiers-répertoires
  code source classé dans   Fichiers-répertoires
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
                    
<?php
/*------------------------------*/
/*
Titre : Téléchargement de fichiers zip avec compteur

Website auteur : https://qwanturank-qwanturank-qwanturank.fr/
Date édition : 27 Fev 2006
Date mise a jour : 22 Sept 2019

Rapport de la maj:
- refactoring du code en PHP 7
- fonctionnement du code vérifié
*/
/*------------------------------*/?>
CREATE TABLE telecharger (
id mediumint(8) unsigned NOT NULL auto_increment,
titre varchar(60) NOT NULL default '',
url varchar(120) NOT NULL default '',
categorie varchar(120) NOT NULL default '',
compteur int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;


*****************************************
*****************************************
id (ID de l'enregistrement)
titre (le titre de l'enregistrement)
url (url ou se trouve le zip)
categorie (la catégorie de l'enregistrement, si nécessaire)
compteur (Le champ qui va compter chaque téléchargement)

<?php

//**********************
//**********************
// Premiere partie
//**********************
//**********************

// Connection au serveur mySQL

$db_server = 'localhost'; // Adresse du serveur MySQL
$db_name = ''; // Nom de la base de données
$db_user_login = 'root'; // Nom de l'utilisateur
$db_user_pass = ''; // Mot de passe de l'utilisateur

// Ouvre une connexion au serveur MySQL
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);

$q = $conn->query("SELECT id,titre,compteur FROM telecharger");

while ($r = mysqli_fetch_array($q))
{
echo "<a href=\"inc_telecharger.php?id=".$r['id']."\" target=\"_blank\">";
echo "".htmlentities($r['titre'])."</a><br />";
echo "Télécharger ".$r['compteur']." fois";
}


//**********************
//**********************
// Seconde partie
//**********************
// inc_telecharger.php
//**********************
//**********************


$db_server = 'localhost'; // Adresse du serveur MySQL
$db_name = ''; // Nom de la base de données
$db_user_login = 'root'; // Nom de l'utilisateur
$db_user_pass = ''; // Mot de passe de l'utilisateur

// Ouvre une connexion au serveur MySQL
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);

// Recupere l'ID
$id = isset($_GET['id']) ? $_GET['id'] : '';

// Detection de l'ID
if (isset($id) && is_numeric($id)) {
// mise à  jour de la table
$conn->query("UPDATE telecharger SET compteur = compteur + 1 WHERE id = $id"
);
// vas chercher l'url
$q = $conn->query("SELECT url FROM telecharger WHERE id = $id");
// redirection vers la page d'origine
header("Location: ".$r["url"]);
}
?>
<?php
/*------------------------------*/
/*
Titre : Téléchargement de fichiers zip avec compteur

Website auteur : https://qwanturank-qwanturank-qwanturank.fr/
Date édition : 27 Fev 2006
Date mise a jour : 22 Sept 2019

Rapport de la maj:
- refactoring du code en PHP 7
- fonctionnement du code vérifié
*/
/*------------------------------*/?>
CREATE TABLE telecharger (
id mediumint(8) unsigned NOT NULL auto_increment,
titre varchar(60) NOT NULL default '',
url varchar(120) NOT NULL default '',
categorie varchar(120) NOT NULL default '',
compteur int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;


*****************************************
*****************************************
id (ID de l'enregistrement)
titre (le titre de l'enregistrement)
url (url ou se trouve le zip)
categorie (la catégorie de l'enregistrement, si nécessaire)
compteur (Le champ qui va compter chaque téléchargement)

<?php

//**********************
//**********************
// Premiere partie
//**********************
//**********************

// Connection au serveur mySQL

$db_server = 'localhost'; // Adresse du serveur MySQL
$db_name = ''; // Nom de la base de données
$db_user_login = 'root'; // Nom de l'utilisateur
$db_user_pass = ''; // Mot de passe de l'utilisateur

// Ouvre une connexion au serveur MySQL
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);

$q = $conn->query("SELECT id,titre,compteur FROM telecharger");

while ($r = mysqli_fetch_array($q))
{
echo "<a href=\"inc_telecharger.php?id=".$r['id']."\" target=\"_blank\">";
echo "".htmlentities($r['titre'])."</a><br />";
echo "Télécharger ".$r['compteur']." fois";
}


//**********************
//**********************
// Seconde partie
//**********************
// inc_telecharger.php
//**********************
//**********************


$db_server = 'localhost'; // Adresse du serveur MySQL
$db_name = ''; // Nom de la base de données
$db_user_login = 'root'; // Nom de l'utilisateur
$db_user_pass = ''; // Mot de passe de l'utilisateur

// Ouvre une connexion au serveur MySQL
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);

// Recupere l'ID
$id = isset($_GET['id']) ? $_GET['id'] : '';

// Detection de l'ID
if (isset($id) && is_numeric($id)) {
// mise à  jour de la table
$conn->query("UPDATE telecharger SET compteur = compteur + 1 WHERE id = $id"
);
// vas chercher l'url
$q = $conn->query("SELECT url FROM telecharger WHERE id = $id");
// redirection vers la page d'origine
header("Location: ".$r["url"]);
}
?>

      Fonctions du code - Doc officielle PHP

   php.net  
Description
Versions PHP
    echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
    header
Envoie un en-tête HTTP brut
PHP 4, 5, 7 et 8
    htmlentities
Convertit tous les caractères éligibles en entités HTML
PHP 4, 5, 7 et 8
    isset
Détermine si une variable est déclarée et est différente de null
PHP 4, 5, 7 et 8
    is_numeric
none
PHP 4, 5, 7 et 8
    mysqli_connect
Alias de mysqli::__construct
PHP 5, 7 et 8
    mysqli_fetch_array
Retourne une ligne de résultat sous la forme d'un tableau associatif
PHP 5, 7 et 8

[2]

  • avatar

    KOogar

    01 Fév 2008 à 11:30

    Merci, c'est corrigé ^^

  • avatar

    Invité

    04 Déc 2007 à 13:16

    $q = mysql_query("SELECT url FROM compteur WHERE id = $id");
    >> FROM telecharger



 Autres snippets qui pourraient vous intéresser

Compteur de Pages avec fichier txt

Compatibilité : PHP 5, PHP 7, PHP 8

Simple compteur de Pages qui comptabilise le nombre total de visiteurs et de bots qui sont passé sur votre site.

Compteur de connectés avec fichier - PHP Sources

Compatibilité : PHP 5, PHP 7, PHP 8

Permet d'afficher le nombre de visiteurs connectés. (ce script n'utilise pas de base de données sql mais un fichier).

* Requêtes exécutées avec Recherche Contextuelle

  Les derniers scripts PHP / MySQL

Serendipity 2.6.0

logo Serendipity
Langue langue fr
Date  aujourd'hui
Taille 15 Mo
Catégorie Blogs

Drupal 11.3.6

logo Drupal
Langue langue us
Date  aujourd'hui
Taille 34 Mo
Catégorie CMS

TYPO3 14.2.0

logo TYPO3
Langue langue fr
Date  hier
Taille 38 Mo
Catégorie CMS

Dolibarr ERP 23.0.1

logo Dolibarr ERP
Langue langue fr
Date 09 Avril 2026
Taille 89 Mo
Catégorie Logiciels

ZwiiCampus 3.7.00

logo ZwiiCampus
Langue langue fr
Date 09 Avril 2026
Taille 11 Mo
Catégorie Administration

Craft CMS 5.9.19

logo Craft CMS
Langue langue fr
Date 08 Avril 2026
Taille 31 Mo
Catégorie CMS

  27 Fév 2006

Information sur les mises à jour

Dernière mise à jour :

22 Sept 2019
refactoring du code en PHP 7
fonctionnement du code vérifié

24 946 Vues
Compatibilité du code
PHP 5, PHP 7, PHP 8
53 codes

Catégorie :  Fichiers-répertoires

Affiche la taille d'un fichier en Ko, Mo, Go, To, Po, Eo, Zo
Affiche une citation au hasard
Affiche une ligne d'un fichier de manière aléatoire
Afficher le code source d'un fichier PHP
Ajoute des lignes au début de vos fichiers textes
Calcul et affiche le nombre de ligne de plusieurs fichiers
Calcul la taille d'un dossier en Octet
Calcul la taille de répertoires et sous répertoires
Change le chmod d'un fichier par FTP
Compresse et décompresse un fichier
Compte le nombre de fichiers d'un répertoire
Compte le nombre de ligne
Copie du contenu d'un dossier en conservant l'arborescence
Copie récursive de dossiers
Copier des fichiers d'1 serveur à1 autre serveur
Création massive de fichiers zip à partir d'une table SQL
Créer un nouveau fichier
Créer un nouveau répertoire
Créer une arborescence récursivement
Découpe des fichiers volumineux
Découpe le path d'1 fichier
Déplace le pointeur de lignes
Déplace un dossier avec sous répertoires
Déplace un fichier dans un autre répertoire
Efface un répertoire et ses sous répertoires
Extrait les adresses emails d'un fichier texte
Indique si 1 répertoire existe sinon il le créer
Interprète du code PHP dans un fichier HTML
Limite la vitesse de download d'un fichier zip
Lire le contenu d'un fichier avec fopen
Lire le contenu d'un fichier ligne par ligne
Liste des répertoires et sous-répertoires
Liste un répertoire
Liste un répertoire par date
Liste un répertoire par ordre alphabétique
Liste un répertoire selon une extension
Mise en cache d'un site
Modifications dans plusieurs fichiers
Modifie massivement le contenu de fichiers texte
Obtenir l'extension d'un fichier
Obtenir l'extention d'un fichier d'une url
Réécrire un fichier en partant de la fin
Régule la vitesse de téléchargement d'un fichier local
Recherche une chaine de caractère dans un fichier
Remplace les balises BR par des \n
Renommer l'extension de fichiers
Supprime des fichiers selon une date
Supprime l'extension d'un fichier
Téléchargement de fichiers zip avec compteur
Upload basique + Formulaire
Upload Multi classe + Formulaire
Upload Multi tout type de fichiers + formulaire
Vide un répertoire de tous ses fichiers