1 2 3 4 5 6 7 8 9 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 93 94 95 96 97 98 99 100 101 102
| <?php
session_start();
//recherche d'informations dans la bdd en fonction du type
if(isset($_GET['id']) and isset($_GET['path']) and isset($_GET['type']) )
{
$nom = (string)$_GET['path'];
if(preg_match('#etet#i', $nom)) // pour '&'
{
$nom = preg_replace('#etet#i', '&', $nom);
}
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=cintellect', 'root', '', $pdo_options);
switch($_GET['type'])
{
case 'jeux' :
$requete = $bdd->prepare('SELECT localisation AS chemin, nombreDownload AS nbDownloads FROM jeux WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch();
$requete = $bdd->prepare('UPDATE jeux SET nombreDownload=:nbDownloads WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->bindValue(':nbDownloads', ($donnees['nbDownloads'] + 1),PDO::PARAM_INT);
$requete->execute();
break;
case 'logiciels' :
$requete = $bdd->prepare('SELECT localisation AS chemin, nombreDownload AS nbDownloads FROM logiciels WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch();
$requete = $bdd->prepare('UPDATE logiciels SET nombreDownload=:nbDownloads WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->bindValue(':nbDownloads', ($donnees['nbDownloads'] + 1),PDO::PARAM_INT);
$requete->execute();
break;
case 'videos' :
$requete = $bdd->prepare('SELECT localisation AS chemin, nombreDownload AS nbDownloads FROM videos WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch();
$requete = $bdd->prepare('UPDATE videos SET nombreDownload=:nbDownloads WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->bindValue(':nbDownloads', ($donnees['nbDownloads'] + 1),PDO::PARAM_INT);
$requete->execute();
break;
case 'musiques' :
$requete = $bdd->prepare('SELECT localisation AS chemin, nombreDownload AS nbDownloads FROM musiques WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch();
$requete = $bdd->prepare('UPDATE musiques SET nombreDownload=:nbDownloads WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->bindValue(':nbDownloads', ($donnees['nbDownloads'] + 1),PDO::PARAM_INT);
$requete->execute();
break;
case 'ebooks' :
$requete = $bdd->prepare('SELECT localisation AS chemin, nombreDownload AS nbDownloads FROM ebooks WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch();
$requete = $bdd->prepare('UPDATE ebooks SET nombreDownload=:nbDownloads WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->bindValue(':nbDownloads', ($donnees['nbDownloads'] + 1),PDO::PARAM_INT);
$requete->execute();
break;
case 'images' :
$requete = $bdd->prepare('SELECT localisation AS chemin, nombreDownload AS nbDownloads FROM images WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->execute();
$donnees = $requete->fetch();
$requete = $bdd->prepare('UPDATE images SET nombreDownload=:nbDownloads WHERE id=:id');
$requete->bindValue(':id', $_GET['id'],PDO::PARAM_INT);
$requete->bindValue(':nbDownloads', ($donnees['nbDownloads'] + 1),PDO::PARAM_INT);
$requete->execute();
break;
}
//-------------------------------------------------------------------
// Construction du chemin du fichier et l'envoie
$chemin = $donnees['chemin'].'\\'.$nom;
//Création des headers, pour indiquer au navigateur qu'il s'agit d'un fichier à télécharger
header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
header('Content-Disposition: attachment; filename="'.$nom.'"'); //Nom du fichier
header('Content-Length: '.filesize($chemin) ); //Taille du fichier
//Envoi du fichier dont le chemin est passé en paramètre
readfile($chemin);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
}
?> |
Partager