contrainte de taille d'une image

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 10:28

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 juil. 2005, 10:37

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

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 10:49

Merci pour ta réponse.

En fait, je voudrais que l'image ait une taille précise et non une fourchette.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 juil. 2005, 10:52

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 />';
}

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 11:54

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 juil. 2005, 11:56

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 juil. 2005, 12:02


Pour mieux comprendre, je t'invite à lire cet article :http://julp.developpez.com/php/comparat ... avascript/
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 12:06

je peux taper le code tel quel ou alors il faut mettre des balises ?

Dans quel mesure, je peut le faire ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 juil. 2005, 12:08

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>';

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 13:15

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 !!

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 juil. 2005, 13:35

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.

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 13:50

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é.

:ordi:

edit mere-teresa : Mets des balises [ php ] autour de ton code, disponible aussi en boutons dans le formulaire de rédaction de post.

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 14:30

tu parle du code javascript ou dans le code php quant tu l'appelles ?

Eléphanteau du PHP | 33 Messages

22 juil. 2005, 16:18

ya plus personnes !! :roll:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 juil. 2005, 16:19

elle fait référence à quoi la dernière question ?