Page 1 sur 2
contrainte de taille d'une image
Posté : 22 juil. 2005, 10:28
par pierrax
Bonjour,
Voici mon p'iti problème :
J'ai un formulaire avec un champ input file.
Je veux faire en sorte que lorsque le formulaire est envoyé, la taille de l'mage soit checké et si elle ne correspond pas à une taille précise, un message d'erreur s'affiche.
Voici mon code actuel :
<?php
$width = 300;
$height = 102;
$nom_file = $_FILES['logo']['name'];
$taille = $_FILES['logo']['size'];
$tmp = $_FILES['logo']['tmp_name'];
?>
<?php
if($_POST['posted']) {
$infos_img = getimagesize($_FILES['logo']['tmp_name']);
if(($infos_img[0] == $width_max) && ($infos_img[1] == $height_max) && ($_FILES['logo']['size'] == $max_size)) {
echo '<b><br><br>Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
}
}
?>
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST">
<input type="file" name="logo" id="logo">
<input name="submit" type="submit" value="Validation" />
<input type="hidden" name="posted" value="1" />
</form>
<?php } else {?>
<p class="Style7">tamer en slip
</p> <?php } ?>
Quelqu'un peut m'aider.
Posté : 22 juil. 2005, 10:37
par ouckileou
il y a un problème au niveau du test :
if(($infos_img[0] == $width_max) && ($infos_img[1] == $height_max) && ($_FILES['logo']['size'] == $max_size)) {
echo '<b><br><br>Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
}
ici tu affiches une erreur si :
- la largeur de l'image est
strictement égale à la largeur maxi ET
- la hauteur de l'image est
strictement égale à la hauteurmaxi ET
- la taille du fichier est
strictement égale à la taille maxi
par contre si tu as seulement une condition de validée, aucune erreur
de même, si la hauteur par exemple est supérieure à la hauteur maxi, pas d'erreur
je verrai plutôt quelque chose comme ça :
if(($infos_img[0] >= $width_max) || ($infos_img[1] >= $height_max) || ($_FILES['logo']['size'] >= $max_size)) {
echo '<b><br><br>Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
}
== remplacés par >=
&& (ET) remplacés par || (OU)
regarde aussi le tutoriel de Flood consacré aux uploads de fichiers dans la FAQ
=>
http://www.phpfrance.com/forums/voir_sujet-545.php
Posté : 22 juil. 2005, 10:49
par pierrax
Merci pour ta réponse.
En fait, je voudrais que l'image ait une taille précise et non une fourchette.
Posté : 22 juil. 2005, 10:52
par ouckileou
alors petite modification du test encore
on garde les OU pour avoir une erreur dès que l'une des trois conditions n'est pas remplie
et on remplace les >= par des != (différent)
if(($infos_img[0] != $width_max)
|| ($infos_img[1] != $height_max)
|| ($_FILES['logo']['size'] != $max_size)) {
echo '<b><br><br>Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
}
Posté : 22 juil. 2005, 11:54
par pierrax
Merci pour tes réponses, j'ai trouvé, ca marche avec :
<?php
if(!empty($_POST['posted'])) {
$infos_img = getimagesize($_FILES['logo']['tmp_name']);
if(($infos_img[0] != 300)
|| ($infos_img[1] != 102)) {
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<b>La taille de votre logo n\'est pas correcte</b><br />';
echo '<b>Fichier :</b> ', $_FILES['logo']['name'], '<br />';
echo '<b>Taille :</b> ', $_FILES['logo']['size'], ' Octets<br />';
echo '<b>Largeur :</b> ', $infos_img[0], ' px<br />';
echo '<b>Hauteur :</b> ', $infos_img[1], ' px<br />';
echo '<br/>';
echo '<br/>';
echo '<b>Votre logo doit obligatoirement une taille de 102 pixels en hauteur et de 300 pixels en longueur</b>';
echo '<br/>';
echo '<br/>';
echo '<b><a href="/pages/actualite/promotion/impression/promo_01/formulaire.php" target="_self">Cliquez ICI pour recommencer</a></b>';
} else {
echo 'Le code est lancé';
}
}
?>
Juste une petite question :
Peut - on lancer un scripte en javascripte dans du PHP ?
Aprés je vous fous la paix
Merci
Posté : 22 juil. 2005, 11:56
par ouckileou
Peut - on lancer un scripte en javascripte dans du PHP ?
non pas vraiment, car le PHP est exécuté par le serveur, et le Javascript par le client (navigateur)
mais tu peux écrire du code Javascript via PHP, et ce code sera exécuté ensuite
Posté : 22 juil. 2005, 12:02
par mere-teresa
Pour mieux comprendre, je t'invite à lire cet article :http://julp.developpez.com/php/comparat ... avascript/
Posté : 22 juil. 2005, 12:06
par pierrax
je peux taper le code tel quel ou alors il faut mettre des balises ?
Dans quel mesure, je peut le faire ?
Posté : 22 juil. 2005, 12:08
par ouckileou
je peux taper le code tel quel ou alors il faut mettre des balises ?
Dans quel mesure, je peut le faire ?
PHP ne fait que écrire du HTML ou autre code dans une page qui sera ensuite interpréte par le navigateur
donc tu fais écrire par PHP du code Javascript come si tu l'écrivais toi même
echo '<script type="text/javascript">';
echo 'function test() { }';
echo '</script>';
Posté : 22 juil. 2005, 13:15
par pierrax
en fait ce qui ce passe, c'est que lorsque mon formulaire est validé, la page est vidée et est remplacé par le texte soit d'erreur ou de validation de la condition.
De ce fait, mon script est bien appelé, mais comme toutes les variables ont été dégagé, il se produit une erreur de javascript.
Ma question :
Est il possible de faire en sorte que soit lorsque ma condition de taille n'est pas bonne, la page soit vidé et que le message de non conformité s'affiche.
ou Soit la condition est bonne et là, la page reste tels quelle et mon script peut prendre les variable qui y sont présente.
Je doit etre compliqué. Faut prendre des risques !!
Posté : 22 juil. 2005, 13:35
par mere-teresa
Est il possible de faire en sorte que soit lorsque ma condition de taille n'est pas bonne, la page soit vidé et que le message de non conformité s'affiche.
ou Soit la condition est bonne et là, la page reste tels quelle et mon script peut prendre les variable qui y sont présente.
Bravo !
Tu viens d'écrire ton script en langage humain, il ne te reste que le PHP à coder.
Posté : 22 juil. 2005, 13:50
par pierrax
Merci mais y a un truc ou deux ou ch'sais pas trop faire :
C'est que lorsque ma condition est bonne ou pas bonne, dans les deux cas, il me vide ma page.
J'ai mis un return false pour le forcer à pas me vider la page, mais il le fait quand même. Le salopiaux !
pour l'instant, j'ai un truc du genre :
<?php
if(!empty($_POST['posted'])) {
$infos_img = getimagesize($_FILES['logo']['tmp_name']);
if(($infos_img[0] != 300)
|| ($infos_img[1] != 102)) {
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<b>La taille de votre logo n\'est pas correcte</b><br />';
echo '<b>Fichier :</b> ', $_FILES['logo']['name'], '<br />';
echo '<b>Taille :</b> ', $_FILES['logo']['size'], ' Octets<br />';
echo '<b>Largeur :</b> ', $infos_img[0], ' px<br />';
echo '<b>Hauteur :</b> ', $infos_img[1], ' px<br />';
echo '<br/>';
echo '<br/>';
echo '<b>Votre logo doit obligatoirement une taille de 102 pixels en hauteur et de 300 pixels en longueur</b>';
echo '<br/>';
echo '<br/>';
echo '<b><a href="/pages/actualite/promotion/impression/promo_01/formulaire.php" target="_self">Cliquez ICI pour recommencer</a></b>';
} else {
return;
'<script type="text/javascript">';
'affichage();';
'</script>';
}
}
?>
et en bas de page :
<?php echo ''?>
<?php } ?>
Je pense que ce dernier est fautif
Je ne suis pas un spécialiste en php, je comprends les principes, mais quant à la mises
en oeuvre c'est pas gagné.
edit mere-teresa : Mets des balises [ php ] autour de ton code, disponible aussi en boutons dans le formulaire de rédaction de post.
Posté : 22 juil. 2005, 14:30
par pierrax
tu parle du code javascript ou dans le code php quant tu l'appelles ?
Posté : 22 juil. 2005, 16:18
par pierrax
ya plus personnes !!

Posté : 22 juil. 2005, 16:19
par ouckileou
elle fait référence à quoi la dernière question ?