Aller au contenu

Problèmes script téléchargement


Chucky2401

Messages recommandés

Membre, 34ans Posté(e)
Chucky2401 Membre 54 messages
Baby Forumeur‚ 34ans‚
Posté(e)

Bonsoir à tous !

J'ai un soucis avec un script pour télécharger les fichiers mis à disposition pour les membres.

Tout d'abord voici la page qui liste les fichiers :

documents.php

<?php
/*
 documents.php

 Copyright 2011 Les 3 Mousquetons <les3mousquetonsboulazacois@gmail.com>

 Version 1.0 - C2401

 This program is free software; you can not redistribute it and/or modify
 it under the terms of the Creative Commons BY-NC-ND. */

/*
* Début du code source
*/

$debut = microtime(true);
session_start();
header('Content-type: text/html; charset=utf-8');
include('includes/config.php');

/* * ******Actualisation de la session...********* */

include('includes/fonctions.php');
connexionbdd();
$etat = en_ligne();
actualiser_session();

/* * ******Fin actualisation de session...********* */

/* * ******En-tête et titre de page******** */

$titre = 'Liste des Documents';

include('includes/haut.php'); //contient le doctype, et début de head.

/* * ********Fin entête et titre********** */
?>
<link rel="stylesheet" href="<?php echo ROOTPATH; ?>/styles/documents.css" type="text/css" media="screen" />
</head>

<?php include('includes/menu.php'); ?>

<div id="map" style="text-align: left;">
<a href="index.php">Accueil</a> => <a href="documents.php">Liste des documents à télécharger</a>
</div>

<div id="corp">
<?php
connexionbdd();
$retour = mysql_query('SELECT YEAR(date) AS annee FROM upload ORDER BY date LIMIT 0,1');
$donnees = mysql_fetch_array($retour);
$firstYear = $donnees['annee'];
$retour = mysql_query('SELECT YEAR(date) AS annee FROM upload ORDER BY date DESC LIMIT 0,1');
$donnees = mysql_fetch_array($retour);
$lastYear = $donnees['annee'];
echo '<div class="date">';
for($i=$firstYear;$i<=$lastYear;$i++){
if($i == date('Y', time()))
	echo ' <strong class="now"><a href="documents.php?annee='.$i.'">'.$i.'</a></strong>';
else
	echo ' <a href="documents.php?annee='.$i.'">'.$i.'</a>';
}
echo '</div>';
?>
<h1>Liste des documents disponibles au téléchargement</h1>
<?php
$liste_mois=array('','Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre',
	'Novembre','Décembre');
$mois=false;
$annee=false;
if(isset($_GET['annee'])){
	$anneeDebut = intval(strip_tags(trim($_GET['annee']))).'-01-01';
	$anneeFin = intval(strip_tags(trim($_GET['annee']))).'-12-31';
}
else{
	$anneeDebut = date('Y').'-01-01';
	$anneeFin = date('Y').'-12-31';
}
$reponse = mysql_query('SELECT id, name, size, filename, description, MONTH(date) AS mois, YEAR(date) AS annee FROM upload WHERE date>=\''.$anneeDebut.'\' AND date<=\''.$anneeFin.'\' ORDER BY date DESC');
while($donnees=mysql_fetch_array($reponse)){
	if($annee!=$donnees['annee']){
	$annee = $donnees['annee'];
	if($mois!=$donnees['mois']){
		$mois=$donnees['mois'];
	}
	echo '<h2>'.$liste_mois[$donnees['mois']].' '.$donnees['annee'].'</h2>';
	}
	else{
	if($mois!=$donnees['mois']){
		$mois=$donnees['mois'];
		echo '<h2>'.$liste_mois[$donnees['mois']].' '.$donnees['annee'].'</h2>';
	}
	}
	$size_octet = $donnees['size'];
	$size_mega = $size_octet/1024/1024;

	$name = $donnees['filename'];
	$name = preg_replace('#([a-z0-9._-]+)\.pdf#isU', '$1.cpt' ,$name);
	$name = 'upload/cpt/'.$name;
	if(!file_exists($name)){
	$cpt = 0;
	}
	else{
	$compteur = fopen($name, 'r');
	$cpt = fgets($compteur);
	}
	echo '<h3><a href="telecharger.php?id='.$donnees['id'].'">'.$donnees['name'].' ('.round($size_mega, 3).'Mo - '.$size_octet.'octets)</a></h3>
	<span class="description">'.$donnees['description'].' - <em>Télécharger : '.$cpt.'</em></span>';
}
	?>
</div>

<?php
include('includes/bas.php');
?>

telecharger.php :

<?php
/*
 telecharger.php

 Copyright 2011 Les 3 Mousquetons <les3mousquetonsboulazacois@gmail.com>

 Version 1.0 - C2401

 This program is free software; you can not redistribute it and/or modify
 it under the terms of the Creative Commons BY-NC-ND. */

/*
* Début du code source
*/

session_start();

include('includes/config.php');
include('includes/fonctions.php');

$id = intval(strip_tags(trim($_GET['id'])));
connexionbdd();
$reponse = mysql_query('SELECT * FROM upload WHERE id="'.$id.'"') or die(mysql_error());
$donnees = mysql_fetch_array($reponse);

/*/echo '<pre>';

print_r($donnees);

echo '</pre>';/**/

header('Content-Type: '.$donnees['type'].'; charset=utf-8'); //Transfert en binaire (fichier)
header('Content-Disposition: attachment; filename="'.$donnees['name'].'"'); //Nom du fichier
header('Content-Length: '.$donnees['size'].''); //Taille du fichier

$files = ROOTPATH.'/upload/'.$donnees['filename'];

/*/echo $files.'<br />';
echo $donnees['name'].'<br />';
echo $donnees['size'].'<br />';
echo $donnees['description'].'<br />';
echo $donnees['filename'].'<br />';
echo $donnees['type'];/**/

/*
* Partie sur le compteur de téléchargement
*/

//ouverture du fichier
$name = $donnees['filename'];
$name = preg_replace('#([a-z0-9._-]+)\.pdf#isU', '$1.cpt' ,$name);
$name = 'upload/cpt/'.$name;
if(!file_exists($name)){
$compteur = fopen($name, 'a+');
fputs($compteur, '1');
}
else{
$compteur = fopen($name, 'r+');
$actuel = fgets($compteur);
$new = $actuel + 1;
fseek($compteur, 0);
fputs($compteur, $new);
}

//fermeture du fichier
fclose($compteur);

readfile($files);
?>

Donc le soucis est quand on clique pour télécharger un fichier on a un fichier de 0 octets !

Voici un screeshot :

535405telecharger.png

Ma BDD contient :

- un id

- le nom du fichier réel avec extension

- la taille en octets

- la description

- la date

- le nom du fichier sur le serveur avec extension

- le type mime

Je vous remercie par avance !

Cordialement

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, 34ans Posté(e)
Chucky2401 Membre 54 messages
Baby Forumeur‚ 34ans‚
Posté(e)

Toujours pas d'aide ?

Le président du club me demande de finir le site pour Mars...

Merci d'avance pour vos réponses !

Cordialement !

Lien à poster
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×