Problème d'upload

Résolu/Fermé
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 - 8 août 2009 à 00:06
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 - 8 août 2009 à 16:20
Bonjour,

j'ai un script d'upload que voila :

<?php
session_start(); // On démarre la session AVANT toute chose

if(!isset($_SESSION['pseudo']) || !isset($_SESSION['mdp'])){
	@header("Location: index.php");
}

if($_SESSION['pseudo'] == "usr1" && $_SESSION['mdp'] == "mdp1"){
	include "connect.inc.php";
	if(isset($_POST['book'])){
		extract($_POST);
		if ($_FILES['book']['error']) {
			switch ($_FILES['book']['error']){
				case 1: // UPLOAD_ERR_INI_SIZE
					echo "<span style=\"color: red; font-weight: bold;\">Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !</span>";
					exit();
				break;
				case 2: // UPLOAD_ERR_FORM_SIZE
					echo "<span style=\"color: red; font-weight: bold;\">Le fichier dépasse la limite autorisée dans le formulaire HTML !</span>";
					exit();
				break;
				case 3: // UPLOAD_ERR_PARTIAL
					echo "<span style=\"color: red; font-weight: bold;\">L'envoi du fichier a été interrompu pendant le transfert !</span>";
					exit();
				break;
				case 4: // UPLOAD_ERR_NO_FILE
					echo "<span style=\"color: red; font-weight: bold;\">Le fichier que vous avez envoyé a une taille nulle !</span>";
					exit();
				break;
			}
		}
		else {
			if ((isset($_FILES['book']['fichier'])&&($_FILES['book']['error'] == UPLOAD_ERR_OK))) {
				$chemin_destination = '/var/www/nouvesse/akli-rom1/upload/';
				move_uploaded_file($_FILES['book']['tmp_name'], $chemin_destination.$_FILES['book']['name']);
				$nom = $_FILES['name'].$_FILES['type'];
				$rq1 = mysql_query("INSERT INTO fichiers VALUES('', '".$_SESSION['pseudo']."', '".time()."', '".time()."', '".$nom."')") or die("Erreur");
				echo "<span style=\"color: red; font-weight: bold;\">Le fichier a bien été uploadé !</span>";
				echo "<br><br><a href=\"\">Retour</a>";
				exit();
			}
		}
	}
	elseif(isset($_POST['down'])){
		extract($_POST);
		$rq2 = mysql_query("UPDATE fichiers SET date_down='".time()."'") or die("Impossible MAJ");
		@header("Location: upload/$down");
	}
	else{
		$rq2 = mysql_query("SELECT * FROM fichiers");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?php echo $_SESSION['pseudo']; ?>...</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link href="default.css" rel="stylesheet" type="text/css">
</head>
<body>
 <h1><?php echo $_SESSION['pseudo']; ?>...</h1>
	<div align="center" style="margin-top: 100px;">
	<form action="" method="post" enctype="multipart/form-data">
	<input type="hidden" name="max_file_size"  value="2048">
	Envoie d'un fichier : <input type="file" name="book"><br><br>
	<input type="submit" value="Envoyer"><br>
	</form>
	<table width="1000px" style="margin: 200px 0 50px 0;">
		<tr>
			<th>Auteur :</th>
			<th>Date envoie :</th>
			<th>Télécharger :</th>
		</tr>
	<?php
	while($tab = mysql_fetch_array($rq2)){
		if($tab['date_envoie'] != $tab['date_down']){
			echo "\t<tr class=\"imp\">\n";
		}else{
			echo "\t<tr>\n";
		}
		echo "\t\t<td>".$tab['auteur']."</td>\n";
		echo "\t\t<td>".$tab['date_envoie']."</td>\n";
		echo "\t\t<td><input type=\"submit\" name=\"down\" value=\"Télécharger ".$tab['nom']." !\"></td>\n";
		echo "\t</tr>\n";
	}
	?>
	</table>
	</div>
 <h2 id="deco"><a href="logout.php">Déconnexion</a></h2>
<div class="copyright">
<p>Bouk1 a 2 by FotoXe33 développer pour nouvesse seulement.<br>Contact : FotoXe33@gmail.com</p>
</div>
</body>
</html>
<?php
	}
}else{ // Sinon (les id ne sont pas bons)
	@header("Location: index.php"); // On le redirige à l'index
}
?>



Le problème, c'est qu'il ne marche pas, et qu'il ne m'affiche aucuns message...

Pouvez-vous m'aider ?

Merci d'avance...

4 réponses

avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
8 août 2009 à 00:24
Essaye la méthode de ce tutoriel.
0
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 51
8 août 2009 à 13:20
J'ai fait un copier coller de ce script (j'ai juste changer le nom du dossier), mais page blanche ! Je l'ai alors modifier comme suit :

<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0){
        // Testons si le fichier n'est pas trop gros
        if ($_FILES['monfichier']['size'] <= 1000000){
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                $extension_upload = $infosfichier['extension'];
				$nom = $infosfichier.$extension_upload;
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'doc', 'odt', 'docx', 'pdf', 'txt', 'php');
                if (in_array($extension_upload, $extensions_autorisees)){
                        // On peut valider le fichier et le stocker définitivement
                        move_uploaded_file($_FILES['monfichier']['tmp_name'], 'upload/' . basename($_FILES['monfichier']['name']));
						$rq1 = mysql_query("INSERT INTO fichiers VALUES('', '".$_SESSION['pseudo']."', '".time()."', '".time()."', '".$nom."')") or die("Erreur");
                        echo "L'envoi a bien été effectué !";
                }
				else{
					echo "Extension non-autorisée !";
				}
        }
		else{
			echo "Fichier trop volumineux !";
		}
}
else{
	switch ($_FILES['book']['error']){
		case 1: // UPLOAD_ERR_INI_SIZE
			echo "<span style=\"color: red; font-weight: bold;\">Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !</span>";
			exit();
		break;
		case 2: // UPLOAD_ERR_FORM_SIZE
			echo "<span style=\"color: red; font-weight: bold;\">Le fichier dépasse la limite autorisée dans le formulaire HTML !</span>";
			exit();
		break;
		case 3: // UPLOAD_ERR_PARTIAL
			echo "<span style=\"color: red; font-weight: bold;\">L'envoi du fichier a été interrompu pendant le transfert !</span>";
			exit();
		break;
		case 4: // UPLOAD_ERR_NO_FILE
			echo "<span style=\"color: red; font-weight: bold;\">Le fichier que vous avez envoyé a une taille nulle !</span>";
			exit();
		break;
	}
}
?>


Toujours page blanche, aucun message, rien !!!

Savez-vous d'où le problème vient ?

Merci d'avance...
0
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 51
8 août 2009 à 14:27
Voila, je viens d'en trouver un autre :

<?php
$dossier = 'upload/';
if(!is_dir($dossier)){
	echo "Pas de dossier !!!";
}
$fichier = basename($_FILES['book']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['book']['tmp_name']);
$extensions = array('.jpg', '.jpeg', '.gif', '.png', '.doc', '.odt', '.docx', '.pdf', '.txt');
$extension = strrchr($_FILES['book']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)){ //Si l'extension n'est pas dans le tableau
	$erreur = 'Vous devez uploader un fichier de type jpg, jpeg, gif, png, doc, odt, docx, pdf, ou txt...';
}
if($taille>$taille_maxi){
	$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)){ //S'il n'y a pas d'erreur, on upload
	//On formate le nom du fichier ici...
	$fichier = strtr($fichier, 
		'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
		'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
	$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
	if(move_uploaded_file($_FILES['book']['tmp_name'], $dossier . $fichier)){ //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
		$rq1 = mysql_query("INSERT INTO fichiers VALUES('', '".$_SESSION['pseudo']."', '".time()."', '".time()."', '".$nom."')") or die("Erreur");
		echo 'Upload effectué avec succès !';
	}
	else{ //Sinon (la fonction renvoie FALSE).
		echo 'Echec de l\'upload !';
	}
}
else{
	echo $erreur;
}
?>


Le seul message qui s'affiche c'est "Echec de l'upload !".

Pourquoi ?
0
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 51
8 août 2009 à 16:20
Problème résolut, ça venait de mon hébergeur qui ne me laissé pas accès au dossier de stockage temporaire.
0