Page 1 sur 1

upload PDO

Posté : 25 déc. 2013, 20:07
par pacphil
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>

Re: upload PDO

Posté : 03 janv. 2014, 13:29
par Pitet
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