Compteur téléchargement + lien caché
Scipt complet
<b>1ere Partie - Page test-compteur.php</b>
<?php
/** identifiants BDD */
define('USER', 'xxxxxxxx'); // Nom Utilisateur
define('MDP', 'Xyxyxy'); // Mot de passe
define('_DB', 'ma_base'); // Nom de votre Base
define('HOST', 'localhost');
// Connection à la Base 1
$conn_DB = mysqli_connect(HOST,USER,MDP,_DB);
// si la connexion se fait en UTF-8, sinon ne rien indiquer
$conn_DB->set_charset("utf8");
if (!$conn_DB) {
die("Erreur de connexion: " . mysqli_connect_error());
}
?>
<a id="retour-actu"></a>
<h1>Tester le compteur :</h1>
<br />
<!-- Script Obfuscation
On cache l'emplacement du fichier à télécharger -->
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function(event) {
var classname = document.getElementsByClassName("transf");
for (var i = 0; i < classname.length; i++) {
classname[i].addEventListener('click', myFunction, false);
}
});
var myFunction = function(event) {
var attribute = this.getAttribute("data-int");
document.location.href= decodeURIComponent(window.atob(attribute));};
</script>
<style>
.transf:hover {
text-decoration: underline;
cursor: pointer;
}
</style>
En cliquant sur le bouton Télécharger, vous allez pouvoir télécharger un fichier zip.
Cette action va aussi ajouter + 1 dans la base de données.
//On récupère l'id de l'article à télécherger
//par une requête appropriée pour un résultat tel que:
$id_article = 1;
<?php
$query_compteur = mysqli_query($conn_DB, "SELECT * FROM logiciels WHERE id_article = '".$id_article."' ");
$res_compteur = mysqli_fetch_object($query_compteur);
$recupNB = $res_compteur->compteur;
$Message_Avant = 'Téléchargements actuels : '.$recupNB.'';
if (isset($_POST['new_compteur'])) {
$query_new_compteur = mysqli_query($conn_DB, "SELECT * FROM logiciels WHERE id_article = '".$id_article."' ");
$res_new_compteur = mysqli_fetch_object($query_new_compteur);
$recupNB = $res_compteur->compteur - 1;
$recupNewNB = $res_new_compteur->compteur;
$Message_Avant = 'Téléchargements antérieurs : '.$recupNB.'';
$Message_Actu = '
Téléchargements actuels : '.$recupNewNB.'';
}
// Lien de téléchargement
$Lien_download = '/COMPTEUR/LOGICIELS/demo-compteur.php?renvoi=demo_download.php&id='.$id_article.'';
//Affichage des messages
echo $Message_Avant;
echo $Message_Actu;
//Bouton de téléchargement en lien caché
?>
<a class="transf btn" data-int="<?php echo base64_encode($Lien_download); ?>">1) > > Télécharger</a>
<br /> <br />
<!-- Pas nécessaire au script:
actualisation de la page pour les test -->
<form method="post" action="#retour-actu">
<input type="submit" id="submit" name="new_compteur" class="btn" value="2) Voir le tableau des téléchargements">
</form>
<br /> <br />
<b>2ere Partie - Page demo-compteur.php</b>
<?php
/** identifiants BDD */
define('USER', 'xxxxxxxx'); // Nom Utilisateur
define('MDP', 'Xyxyxy'); // Mot de passe
define('_DB', 'ma_base'); // Nom de votre Base
define('HOST', 'localhost');
$Site_Url = "https://www.mon-site.com";//Adresse du site
// Connection à la Base 1
$conn_DB = mysqli_connect(HOST,USER,MDP,_DB);
// si la connexion se fait en UTF-8, sinon ne rien indiquer
$conn_DB->set_charset("utf8");
if (!$conn_DB) {
die("Erreur de connexion: " . mysqli_connect_error());
}
$url = $_GET["renvoi"];
$id = $_GET["id"];
// Mise à jour de la table logiciels
//et renvoi vers la page qui va effectuer le téléchargement
$update_compteur= 'UPDATE logiciels SET compteur=compteur+1 WHERE id_article = "'.$id.'"';
$res_update = $conn_DB->query($update_compteur);
header("location: $Site_Url/COMPTEUR/LOGICIELS/$url");
die();
?>
<br /> <br />
<b>3ere Partie - Page demo_download.php</b>
<!-- La page qui génère le download -->
<?php
$fichier = 'demo_telechargement.zip';
header("Content-disposition: attachment; filename=$fichier");
header("Content-Type: application/force-download");
readfile($fichier);
?>