Bonsoir à tous et à toutes,
Récemment, je me suis mis à faire un formulaire permettant à un internaute d'uploader une image selon plusieurs restrictions.
Parmi ces restrictions, il y a celle de la taille (en mo) de l'image.
Dans le tutoriel que je l'ai lu pour faire mon formulaire d'upload, l'auteur nous dit qu'il faut mettre cette ligne de protection mais qu'elle n'est pas infranchissable, loin de là.
Ensuite, il faudra vérifier la taille de l'image avec cette nouvelle ligne de code mais cette fois-ci en PHP :
Première question que j'ai à vous poser, es-ce vraiment utile et judicieux d'utiliser MAX_FILE_SIZE ? Étant donné que cette protection est facilement contournable autant ne pas l'utiliser ?
Deuxième question, cette même ligne de protection m'embête car elle engendre quelque chose de non désiré.
Ci-dessous, le code de mon formulaire d'envois d'image :
Maintenant, le script traitant l'envoie de l'image :
Bon, jusque-là tout marche comme voulu on ne peut pas envoyer une image excédent 1mo.
Si l'on essaie d'envoyer une image dont la taille est supérieure à 1mo, on verra Vous ne pouvez pas envoyer une image excédent 1mo. s'afficher.
Néanmoins, si, dans mon code XHTML, je rajoute cette ligne avec cette valeur :
Si, de nouveau, j'envoie une image excédent 1mo, une phrase nous dira ceci Une erreur s'est produite durant le transfert de votre image. et non Vous ne pouvez pas envoyer une image excédent 1mo.
J'ai essayé de modifier la valeur numérique de MAX_FILE_SIZE mais rien à y faire le problème persiste.
Alors que si je retire la ligne de protection de mon code XHTML la phrase Vous ne pouvez pas envoyer une image excédent 1mo. s'affiche bien.
D'où ma question, le responsable de cette erreur et la ligne de protection ou sa valeur ?
Modifié par jQz (14 Aug 2009 - 00:13)
Récemment, je me suis mis à faire un formulaire permettant à un internaute d'uploader une image selon plusieurs restrictions.
Parmi ces restrictions, il y a celle de la taille (en mo) de l'image.
Dans le tutoriel que je l'ai lu pour faire mon formulaire d'upload, l'auteur nous dit qu'il faut mettre cette ligne de protection mais qu'elle n'est pas infranchissable, loin de là.
<input type="hidden" name="MAX_FILE_SIZE" value="12345" />
Ensuite, il faudra vérifier la taille de l'image avec cette nouvelle ligne de code mais cette fois-ci en PHP :
$_FILES['monimage']['size'] <= 1000000 // Par exemple.
Première question que j'ai à vous poser, es-ce vraiment utile et judicieux d'utiliser MAX_FILE_SIZE ? Étant donné que cette protection est facilement contournable autant ne pas l'utiliser ?
Deuxième question, cette même ligne de protection m'embête car elle engendre quelque chose de non désiré.
Ci-dessous, le code de mon formulaire d'envois d'image :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Envoyer une image</title>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="templates/css/design.css" />
</head>
<body>
<div id="page">
<div class="contenu">
<fieldset>
<legend>Envoyer une image</legend>
<form action="cible_envoi.php" method="post" enctype="multipart/form-data">
<p>
Veuillez envoyer votre image en utilisant le formulaire ci-dessous.<br />
<input type="file" name="monimage" /><br />
<input type="submit" value="Envoyer votre image" />
</p>
</form>
</fieldset>
</div>
</div>
</body>
</html>
Maintenant, le script traitant l'envoie de l'image :
<?php
/* Script PHP permettant d'effectuer des verifications d'une image envoyée sur le serveur.
* Dernière date de modification : 13 aout 2009.
* Provenance : Script provenant du site du zéro.
*/
// Tout d'abord, on vérifie si l'image que l'internaute a envoyé a bien été envoyé et qu'il n'y a pas eu d'erreur.
if (isset($_FILES['monimage']) AND $_FILES['monimage']['error'] == 0)
{
// On vérifie que l'image n'excède pas 1mo.
if ($_FILES['monimage']['size'] <= 1000000)
{
// On vérifie si l'extension de l'image est autorisée.
$infosimage = pathinfo($_FILES['monimage']['name']);
$extension_upload = $infosimage['extension'];
$extension_autorisees = array('jpg', 'jpeg', 'png');
if (in_array($extension_upload, $extension_autorisees))
{
// Si l'extension est bonne, on valide et on stocke définitivement l'image.
move_uploaded_file($_FILES['monimage']['tmp_name'], 'uploads/' . basename($_FILES['monimage']['name']));
echo "Votre image a bien été envoyé !";
}
else
{
echo "L'extension de votre image n'est pas autorisée.";
}
}
else
{
echo "Vous ne pouvez pas envoyer une image excédent 1mo.";
}
}
else
{
echo "Une erreur s'est produite durant le transfert de votre image.";
}
?>
Bon, jusque-là tout marche comme voulu on ne peut pas envoyer une image excédent 1mo.
Si l'on essaie d'envoyer une image dont la taille est supérieure à 1mo, on verra Vous ne pouvez pas envoyer une image excédent 1mo. s'afficher.
Néanmoins, si, dans mon code XHTML, je rajoute cette ligne avec cette valeur :
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
Si, de nouveau, j'envoie une image excédent 1mo, une phrase nous dira ceci Une erreur s'est produite durant le transfert de votre image. et non Vous ne pouvez pas envoyer une image excédent 1mo.
J'ai essayé de modifier la valeur numérique de MAX_FILE_SIZE mais rien à y faire le problème persiste.
Alors que si je retire la ligne de protection de mon code XHTML la phrase Vous ne pouvez pas envoyer une image excédent 1mo. s'affiche bien.
D'où ma question, le responsable de cette erreur et la ligne de protection ou sa valeur ?
Modifié par jQz (14 Aug 2009 - 00:13)