Salut,
Voici le script que j'ai obtenu, avec une ou 2 heures de bricolage (oui, je sais le codage est loin d'être beau...
<?php
if (isset($_GET['action']) AND $_GET['action'] == "validation")
{
// Si le formulaire est validé, on définit les dimensions autorisées.
$largeur_max = 4000;
$hauteur_max = 3000;
$poids_max = 5242880; //5mo = 5120ko = 5242880 octets
$erreur = "";
$poids_max_txt = round($poids_max / 1024)." ko";
if (is_uploaded_file($_FILES['image']['tmp_name']))
{
if ($infos_img = getimagesize($_FILES['image']['tmp_name']))
{
if ($infos_img[0] > $largeur_max)
{$erreur .= "L'image a une largeur de ".$infos_img[0]."px alors que la largeur maximale est $largeur_max px.<br />";}
if ($infos_img[1] > $hauteur_max)
{$erreur .= "L'image a une hauteur de ".$infos_img[1]."px alors que la hauteur maximale est $hauteur_max px.<br />";}
if ($_FILES['image']['size']>$poids_max)
{
$erreur .= "L'image est trop lourde. Son poids ne doit pas dépasser ".$poids_max_txt.".<br />";}
if ($infos_img[2] >= 6 OR $infos_img[2]==4) // 1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP, 7&8=TIFF, 9=JPC, 10=JP2, 11=JPX, 12=JB2, 13=SWC, 14=IFF
{$erreur .= "L'image doit être au format .gif, .jpg, .psd ou .png. Merci<br />";}
if (file_exists("/images/".$image_name))
{$erreur .= "Il y a déjà une image avec ce nom.<br />";}
if ($erreur == "")
{
move_uploaded_file($image,"images/".$image_name);
$erreur = "no";
}
}
else{
$erreur .= "Ce n'est pas une image qui a été uploadée.<br />";
}
}
else{
$erreur .= "Aucune image n'a été uploadée.<br />";
}
if ($erreur=='no'){
echo '<div style="background-color:#FFFFFF; border:2px dashed #000000; margin:auto; margin-top:100px; height:150px; width:500px; text-align:center;">';
echo 'L\'upload s\'est correctement déroulée.<br />';
echo '<a href="upload.php">Cliquez-ici pour uploader une nouvelle image.</a>';
echo '</div>';
}
if ($erreur!='no') {
echo '<div style="border:1px dashed #0000FF; margin:auto; margin-top:50px; width:500px; text-align:center;">';
echo $erreur.'<br />';
echo '<a href="upload.php">Cliquez-ici pour retourner au formulaire d\'upload</a>';
echo '</div>';
}
}
else{
//Si le formulaire n'a pas été validé.
?>
<div style="padding:20px; background-color:#FFFFFF; border:2px dashed #000000; margin:auto; margin-top:100px; height:150px; width:500px; text-align:center;">
<form name="upload" enctype="multipart/form-data" method="POST" action="upload.php?action=validation">
<input type="hidden" name="MAX_FILE_SIZE" value="7542880" />
<!-- Upload autorisée 7mo via formulaire, puis message d'erreur si poids>5mo -->
<input type="file" size="35" name="image" /><br>
<input type="submit" value="Uploader" />
</form>
</div>
<?php } ?>
Donc en principe, on ne peut uploader rien d'autre que des images (gis, png, jpeg, psd) puisque si le getimagesize() échoue l'uplaod échoue également. Donc en principe c'est sécurisé.
Surtout que dans le script finale, les images seront enregistrés sous cette forme : "nombre_aleatoire.ext".
Pouvez vous faire des petits esais pour en vérifier la sécurité SVP ?
merci !
@ +