Eléphant du PHP |
184 Messages
16 nov. 2011, 19:31
Oui
Je vous donne ce que j'ai fais, en gros, il me saute la vérification de la taille de l'image.
Si jamais l'image est plus grosse, il m'affiche le message d'erreur disant qu'il n'y a pas d'image.
Je crois qu'il y a des erreurs dans les if et les else mais je suis un peu paumé

( Je referais la vérification des formats, j'aimerai vraiment savoir pourquoi je n'arrive pas à contrôler la taille

)
if(isset($_POST['action'])){
// -------------
// Récupération des textes associés
$MAX_FILE_SIZE = intval($_POST['MAX_FILE_SIZE']);
// -------------
// SI on a bien une photo uploadée :
if(isset($_FILES['userfile']) && $_FILES['userfile']['size']>0)
{
// -------------------------------------
// 1/ GESTION DES ERREURS de la photo
// -------------------------------------
// extension du fichier uploadé (en minuscule)
$file_Extension = strtolower(pathinfo($_FILES['userfile']['name'],PATHINFO_EXTENSION));
// -----------------
// on verifie les restrictions sur les fichiers
if (filesize($_FILES['userfile']['size']) > 2097152) {
$msgErreurPhoto .= 'Erreur <b>Photo</b> : Taille de fichier trop important (2 Mo Maximum)<br />';
$traiterPhotoOK = 'NON';
}
// on verifie l extension
elseif ($_FILES['userfile']['size']>0 && @strpos(FILE_EXTENSION_PHOTO,$file_Extension)===false) {
$msgErreurPhoto .= 'Erreur <b>Photo</b> : Ce n\'est pas un fichier valide ('.FILE_EXTENSION_PHOTO.')<br />';
$traiterPhotoOK = 'NON';
}
elseif ($traiterPhotoOK=='NON' && $msgErreurPhoto!='') {
$msgErreurPhoto .= 'Impossible d\'enregistrer le fichier.';
}
else {
$traiterPhotoOK ='OK';
}
// -------------------------------------
// 2/ si pas d'erreur : TRAITEMENT
// -------------------------------------
if ($traiterPhotoOK=='OK')
{
// -------------
// dossiers
$uploaddir = $_SERVER['DOCUMENT_ROOT']."admin/bibliographie/images/";
$uploaddir2 = $_SERVER['DOCUMENT_ROOT']."admin/bibliographie/images/mini/";
// -------------
// nom de la photo
$nFile = htmlspecialchars(stripslashes(trim($_FILES['userfile']['name'])), ENT_NOQUOTES, 'UTF-8');
// remplacement (caracteres accentués, espace)
$avec_accent = utf8_decode("ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÒÓÔÕÖŒØÙÚÛÜÝàáâãäåæçèéêëìíîïðòóôõöùúûüýÿÑñŠšœ '²|',;:!¿/(){}[]+=*~<>&¢€£\$¤¥§©ø÷×µ¶®°±¨@#");
$sans_accent = utf8_decode("abcdefghijklmnopqrstuvwxyzAAAAAAACEEEEIIIIOOOOOOOUUUUYaaaaaaaceeeeiiiioooooouuuuyynnsso--------------------------------------------");
$nFile = strtr(utf8_decode($nFile), $avec_accent, $sans_accent);
$nFile = utf8_encode($nFile);
$nFile = mysql_real_escape_string($nFile); // (pour enregistrement en Bdd)
// -------------
// on enregistre la photo originale
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$nFile);
// -------------
// on COPIE la photo originale (pour le picto, avant redimensionnement)
$redimPHOTOOK800 = fctredimimage(800, 0, '', '', $uploaddir, ''.$nFile);
copy($uploaddir.$nFile, $uploaddir2.$nFile);
// redimensionnement/enregistrement du picto
$redimPHOTOOK150 = fctredimimage(200, 0, '', '', $uploaddir2, ''.$nFile);
// -------------
$sq = "INSERT INTO images_bibliographie VALUES(''images/$nFile','images/mini/$nFile')";
$quer = mysql_query($sq) or die('erreur sq: '.mysql_error());
// -------------
// message de validation
$msgvalidPhoto = 'La photo a été uploadée';
} // fin TRAITEMENT Photo
}
else{
$traiterPhotoOK ='NON';
echo '<center>'.'<br/>'.'<p style="color:#ff0000;font-weight:bold;">Vous devez charger une image pour pouvoir continuer</p>'.'</center>';
}
} // fin traitement
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajouter une image</title>
<link href="../style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<center>
<?php
// ---------------------------------
// Traitement OK : message de validation
// ---------------------------------
if($traiterPhotoOK=='OK')
{
echo '<br/>'.'<p style="color:#ff0000;font-weight:bold;">Image correctement ajoutée à la base de données</p>'."<br/><br/><a href=\"addimage.php\">Ajouter une nouvelle image</a>"."<br/><br/><a href=\"gestion_images.php\">Revenir à l'accueil</a>";
exit;
}
// ---------------------------------
// Affichage du FORMULAIRE
// ---------------------------------
elseif($traiterPhotoOK=='NON')
echo $msgErreurPhoto;
{
?>
<h1>Ajouter une image:</h1>
<br />
<form action="addimage.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="add" />
<input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
<p>Image:<br /><input type="file" name="userfile" /></p>
<br />
<p><input type="submit" name="submit" value="Envoyer" /></p>
</form>
<?php
} // fin formulaire
?>