Je suis débutant en PHP, et l'on m'a confié une tâche plutôt fastidieuse. Sur le site de mon entreprise, un script permet de faire du force download. Ce script fonctionne bien, à une exception près :
Depuis que l'on est passé sur un hébergement mutualisé chez OVH, lorsque l'on insère une donnée dans la base MySQL, le résultat est dupliqué, voire triplé, mais à d'autres moments non ! En gros, c'est aléatoire... Peut-être est-ce le script qui n'est pas optimisé ? Je sais en effet qu'il existe différents scripts pour faire du force download... Merci de votre aide
<?php
session_start();
include ('../../Fichier_connect/x.php');
if (!empty($_SESSION['Login'])&&!empty($_SESSION['MDP']))
{
$fichier = 'monfichier';
$chemin = '../../Telechargement/V4.3/' . $fichier;
$login = $_SESSION['Login'];
$password = $_SESSION['MDP'];
$SQL= "(Select RaisonSociale From login Where Login='".$login."' and MDP ='".sha1($password)."')";
$req = mysql_query($SQL) or die('Erreur SQL !<br>'.$SQL.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
// Récupération du fichier passé en paramètre
if ($chemin != '') // non vide
{
// IMPORTANT : avant quoi que ce soit, on vérifie que le fichier existe bien
if (file_exists($chemin))
{
// Le fichier existe bien : on va incrémenter son compteur de téléchargements
$req_augmenterdownload = "UPDATE downloads_files
SET
downloaded = (downloaded+1),
last_download = '".time()."',
last_user = '".$data['RaisonSociale']."'
WHERE
filename='".$chemin."';";
mysql_query($req_augmenterdownload) or die($req_augmenterdownload.'<br />'.mysql_error());
//Insertion qui télécharge
$req_insert = "INSERT INTO suivi_telechargement (RAISONSOCIALE, FICHIER, DATE) VALUES ('".$data['RaisonSociale'] ."','".$chemin."','".time()."')";
mysql_query($req_insert) or die($req_insert.'<br />'.mysql_error());
// requête effectuée : on envoie le fichier
$f=fopen($chemin,"rb");
$file=fread($f,filesize($chemin));
fclose($f);
header("Content-disposition: attachment; filename=".$fichier);
header("Content-type:application/octet-stream");
header('Content-Length: '. filesize($chemin));
header('Content-Transfer-Encoding: binary');
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
echo($file);
exit();
};
};
}
else
{
echo "<script>alert(\"Vous devez vous connecter pour télécharger\")</script>";
echo '<META HTTP-EQUIV="Refresh" CONTENT="3;URL= http://www.monsite.com"> ';
};
function detect_browser($var)
{
if(eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $var))
{
$c = "ie";
}else{
$c = "nn";
}
return $c;
}
?>