upload PDO

Eléphant du PHP | 257 Messages

25 déc. 2013, 20:07

bonjour, j'ai repris une base de script trouver sur internet, j'ai rajouter une fonction épuration et code aléatoire.

mais j'ai une Erreur dont je trouve pas la solution
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\Program Files\EasyPHP-5.3.8.1\annonce5\tel_im.php on line 65
quand j'ai cette extension d'un photo Maison_belle_lol_moi.jpg j'ai une erreur

<?php
include_once("require/config1.php");

function epure($var)
{
  $var=strtr($var,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
  $var=strtolower($var);
  $var=str_replace("'","_",$var);
  $var=str_replace("\"","_",$var);
  $var=str_replace(" ","_",$var);
  $var=str_replace("__","_",$var);
  $var=str_replace("__","_",$var);
 /* $var= @eregi_replace("[^a-z0-9\_\-\.]","",$var);*/
  $var = preg_replace('/[^a-z0-9\_\-\.]+$/','',$var);
  $var = rtrim($var,'_');
  $var = ltrim($var,'_');
  return $var;
}
// Génère un code aléatoire de 5 caractères pour charques images
function code_aleatoire() 
{ 
	$alphabet    = 'abcdefghijklmnopqrstuvwxyz'; 
	$alphabet   .= '1234567890'; 
	$chaine      = ''; 
	for($i=0;$i < 5;$i++) 
	{ 
        $chaine .= substr($alphabet,rand()%(strlen($alphabet)),1); 
	} 
	return $chaine; 
}
// Constantes
define('TARGET', '/image_annonce/'); // Repertoire cible
define('MAX_SIZE', 100000); // Taille max en octets du fichier
define('WIDTH_MAX', 800); // Largeur max de l'image en pixels
define('HEIGHT_MAX', 800); // Hauteur max de l'image en pixels
// Tableaux de donnees
$tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees
$infosImg = array();
// Variables
$extension = '';
$message = '';
$nomImage = '';
/************************************************************
* Creation du repertoire cible si inexistant
*************************************************************/
if( !is_dir(TARGET) ) {
if( !mkdir(TARGET, 0755) ) {
exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
}
}
/************************************************************
* Script d'upload
*************************************************************/
if(!empty($_POST))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo(epure($_FILES['fichier']['name']), PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = GetImageSize($_FILES['fichier']['tmp_name']);
// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier']['error'])
&& UPLOAD_ERR_OK === $_FILES['fichier']['error'])
{
// On renomme le fichier
$nomImage = code_aleatoire(uniqid()) .'.'. $extension;
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
{
                 $in_annonce=array(':id_gal'=> $idXX, 
				                    ':gal'=> $nomImage,
									':entre'=> date("Y-m-d"));
 
                 $values_info= join(', ',array_keys($in_annonce));
                 $req_in_annonce =$connection->prepare( 'INSERT INTO in_annonce ('.str_replace(':','',$values_info).') VALUES('.$values_info.')' );
                 $req_in_annonce->execute($in_annonce);	
                 	
	
$message = 'Upload réussi !';
}
else
{
// Sinon on affiche une erreur systeme
$message = 'Problème lors de l\'upload !';
}
}
else
{
$message = 'Une erreur interne a empêché l\'uplaod de l\'image';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message = 'Erreur dans les dimensions de l\'image !';
}
}
else
{
// Sinon erreur sur le type de l'image
$message = 'Le fichier à uploader n\'est pas une image !';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = 'L\'extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = 'Veuillez remplir le formulaire svp !';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Upload d'une image sur le serveur !</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if( !empty($message) )
{
echo '<p>',"\n";
echo "\t\t<strong>", htmlspecialchars($message) ,"</strong>\n";
echo "\t</p>\n\n";
}
?>
<!-- Debut du formulaire -->
<form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
<legend>Formulaire</legend>
<p>
<label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" />
<input type="hidden" name="id_gal" value="<?php echo $_SESSION['id_im']; ?>" readonly="readonly" />
<input name="fichier" type="file" id="fichier_a_uploader" />
<input type="submit" name="submit" value="Uploader" />
</p>
</fieldset>
</form>
<!-- Fin du formulaire -->
</body>
</html>

Pitet
Invité n'ayant pas de compte PHPfrance

03 janv. 2014, 13:29

Salut,

Ton erreur t'indique que la variable $_FILES['fichier']['tmp_name'] est vide.

Si aucune erreur ne survient pendant l'upload du fichier, ton tableau $_FILES['fichier'] devrait contenir (par exemple) :
$_FILES['fichier']['name'] => "Maison_belle_lol_moi.jpg"
$_FILES['fichier']['tmp_name'] => "/tmp/phpRFKOaV"
$_FILES['fichier']['error'] => 0

Si une erreur survient pendant l'upload :
$_FILES['fichier']['name'] => "Maison_belle_lol_moi.jpg"
$_FILES['fichier']['tmp_name'] => ""
$_FILES['fichier']['error'] => 1

Ton premier test
// On verifie si le champ est rempli
if( !empty($_FILES['fichier']['name']) )
ne suffit pas à valider que le fichier a bien été uploadé. Une solution est donc de vérifier la variable $_FILES['fichier']['error'].

Bonne journée