contrainte de taille d'une image

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : contrainte de taille d'une image

par Cyrano » 25 juil. 2005, 09:21

Modération : Je l'ai fait moi-même. Ce serait sympa de penser à le faire : utiliser les balises [php], ça coute pas cher, et un [Résolu] peut aussi être considéré comme une part de remerciement. Ne pas oublier ceux qui viendront plus tard avec un problème similaire. Un sujet identifié [Résolu] servira à tout le monde, un autre sujet non marqué ne servira qu'aux obstinés qui fouillent quand même partout, et ils ne sont pas assez nombreux.

J'ajoute que ça aide les modérateurs si chacun fait sa petite part. On peut pas absolument tout voir en permanence, soyez sympa, ce forum est aussi le vôtre.

par ouckileou » 25 juil. 2005, 09:08

un petit edit pour mettre des balises
[ /php] et le tag [Résolu] et ce sera parfait ;)

par pierrax » 25 juil. 2005, 09:02

Voici peut çetre la solution :

La problèmatique :

- attribuer une contraite de taille d'une image
- lancement d'un script en javascript avec récupération de valeurs saisies dans une formulairte
-récupération de données provenant d'une bases de donnée :

Le formulaire :

haut de pages :
<?php
mysql_select_db($database_ocai, $ocai);
$query_promotion = "SELECT * FROM promo";
$promotion = mysql_query($query_promotion, $ocai) or die(mysql_error());
$row_promotion = mysql_fetch_assoc($promotion);
$totalRows_promotion = mysql_num_rows($promotion);
?>

<?php
$target     = '../promo_01/';
$nom_file   = $_FILES['logo']['name']; 
$taille     = $_FILES['logo']['size']; 
$tmp        = $_FILES['logo']['tmp_name'];
$chmod		= $_FILES['logo']['chmod'];
?>
Dans la page : ( Les conditions :)
<?php
if(!empty($_POST['posted'])) {
    if(!empty($_FILES['logo']['name'])) {
        $infos_img = getimagesize($_FILES['logo']['tmp_name']); 
if(($infos_img[0] == 300) 
    || ($infos_img[1] == 100)) {
                if(move_uploaded_file($_FILES['logo']['tmp_name'],$target.$_FILES['logo']['name'])) {
				chmod ($target.$_FILES['logo']['name'], 0755); 
	echo '<b><br><br><br><br><br><br><br>La page s\'est affiché correctement.</b><br /><br />';
		echo '<br/>';
	echo '<b><a href="/pages/actualite/promotion/impression/promo_01/formulaire.php" target="_self">Cliquez ICI pour recommencer</a></b>';

$logo_ocai = $_FILES['logo']['name'];
$date_begin = $_POST['date_debut'];
$date_finish = $_POST['date_fin'];
$pied =  $row_promotion['pied'];
$titre_composition =  $row_promotion['$titre_composition'];
$composition_01 =  $row_promotion['composition_01'];
$composition_02 =  $row_promotion['composition_02'];
$composition_03 =  $row_promotion['composition_03'];
$composition_04 =  $row_promotion['composition_04'];
$composition_05 =  $row_promotion['composition_05'];
$composition_06 =  $row_promotion['composition_06'];
$composition_07 =  $row_promotion['composition_07'];
$composition_08 =  $row_promotion['composition_08'];
$composition_09 =  $row_promotion['composition_09'];
$composition_10 =  $row_promotion['composition_10'];
$titre_declinaison =  $row_promotion['titre_declinaison'];
$cadeau_01 =  $row_promotion['cadeau_01'];
$cadeau_02 =  $row_promotion['cadeau_02'];
$cadeau_03 =  $row_promotion['cadeau_03'];
$cadeau_04 =  $row_promotion['cadeau_04'];
$cadeau_05 =  $row_promotion['cadeau_05'];
$cadeau_06 =  $row_promotion['cadeau_06'];
?>
<input type="hidden" name="logo" id="logo" value="<?php echo $logo_ocai; ?>">
<input type="hidden" name="date_debut" id="date_debut" value="<?php echo $date_begin; ?>">
<input type="hidden" name="date_fin" id="date_fin" value="<?php echo $date_finish; ?>">
<input type="hidden" name="titre_composition" id="titre_composition" value="<?php echo $titre_composition ?>">
<input type="hidden" name="composition_01" id="composition_01" value="<?php echo $composition_01; ?>">
<input type="hidden" name="composition_02" id="composition_02" value="<?php echo $composition_02; ?>">
<input type="hidden" name="composition_03" id="composition_03" value="<?php echo $composition_03; ?>">
<input type="hidden" name="composition_04" id="composition_04" value="<?php echo $composition_04; ?>">
<input type="hidden" name="composition_05" id="composition_05" value="<?php echo $composition_05; ?>">
<input type="hidden" name="composition_06" id="composition_06" value="<?php echo $composition_06; ?>">
<input type="hidden" name="composition_07" id="composition_07" value="<?php echo $composition_07; ?>">
<input type="hidden" name="composition_08" id="composition_08" value="<?php echo $composition_08; ?>">
<input type="hidden" name="composition_09" id="composition_09" value="<?php echo $composition_09; ?>">
<input type="hidden" name="composition_10" id="composition_10" value="<?php echo $composition_10; ?>">
<input type="hidden" name="titre_declinaison" id="titre_declinaison" value="<?php echo $titre_declinaison; ?>">
<input type="hidden" name="cadeau_01" id="cadeau_01" value="<?php echo $cadeau_01; ?>">
<input type="hidden" name="cadeau_02" id="cadeau_02" value="<?php echo $cadeau_02; ?>">
<input type="hidden" name="cadeau_03" id="cadeau_03" value="<?php echo $cadeau_03; ?>">
<input type="hidden" name="cadeau_04" id="cadeau_04" value="<?php echo $cadeau_04; ?>">
<input type="hidden" name="cadeau_05" id="cadeau_05" value="<?php echo $cadeau_05; ?>">
<input type="hidden" name="cadeau_06" id="cadeau_06" value="<?php echo $cadeau_06; ?>">
<input type="hidden" name="pied" id="pied" value="<?php echo $pied; ?>">
<?php 
} else {				

						}} else {

?> 
 <?php 
echo '<br/>';
	echo '<br/>';
	echo '<br/>';
	echo '<br/>';
	echo '<b>La taille de votre logo n\'est pas correcte</b><br />';
	echo '<br/>';
	echo '<b>Fichier :</b> ', $_FILES['logo']['name'], '<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 avoir une taille de 100 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>';
?>
<?php
}
    } else { 
        // Sinon on affiche une erreur pour le champ vide 
        echo '<b><br><br><br><br><br><br><br>Vous n\'avez pas sélectionné d\'image pour votre logo</b><br /><br />';
		echo '<br/>';
	echo '<b><a href="/pages/actualite/promotion/impression/promo_01/formulaire.php" target="_self">Cliquez ICI pour recommencer</a></b>';
    } 
}
?>
Le formulaire :
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST" name="formulaire1" onsubmit="visualisation(); return false;">
		<?php if ($_POST['posted'] == "") { ?>
input type="file" name="logo" id="logo"></td>
input length="20" name="date_debut" id="date_debut" onClick="MyGetDate(this);" 
input length="30" name="date_fin" id="date_fin" onClick="MyGetDate(this);"

// récupération des variables venat d'une base de donnée

<input type="hidden" name="titre_composition" value="<?php echo $row_promotion['titre_composition']; ?>">
<input type="hidden" name="composition_01" value="<?php echo $row_promotion['composition_01']; ?>">
<input type="hidden" name="composition_02" value="<?php echo $row_promotion['composition_02']; ?>">
<input type="hidden" name="composition_03" value="<?php echo $row_promotion['composition_03']; ?>">
<input type="hidden" name="composition_04" value="<?php echo $row_promotion['composition_04']; ?>">
<input type="hidden" name="composition_05" value="<?php echo $row_promotion['composition_05']; ?>">
<input type="hidden" name="composition_06" value="<?php echo $row_promotion['composition_06']; ?>">
<input type="hidden" name="composition_07" value="<?php echo $row_promotion['composition_07']; ?>">
<input type="hidden" name="composition_08" value="<?php echo $row_promotion['composition_08']; ?>">
<input type="hidden" name="composition_09" value="<?php echo $row_promotion['composition_09']; ?>">
<input type="hidden" name="composition_10" value="<?php echo $row_promotion['composition_10']; ?>">
<input type="hidden" name="titre_declinaison" value="<?php echo $row_promotion['titre_declinaison']; ?>">
<input type="hidden" name="cadeau_01" value="<?php echo $row_promotion['cadeau_01']; ?>">
<input type="hidden" name="cadeau_02" value="<?php echo $row_promotion['cadeau_02']; ?>">
<input type="hidden" name="cadeau_03" value="<?php echo $row_promotion['cadeau_03']; ?>">
<input type="hidden" name="cadeau_04" value="<?php echo $row_promotion['cadeau_04']; ?>">
<input type="hidden" name="cadeau_05" value="<?php echo $row_promotion['cadeau_05']; ?>">
<input type="hidden" name="cadeau_06" value="<?php echo $row_promotion['cadeau_06']; ?>">
<input type="hidden" name="pied" value="<?php echo $row_promotion['pied']; ?>">
</span></p>
</form>
En pied de page :
<?php } else {?> 
<script type="text/javascript"> 
affichage(); 
</script>
        <?php } ?>
En gros mon problème était que lors de la validation du formulaire celui - ci était vidé d son contenu.

Donc le script utilisant les données du formulaire ne pouvait fonctionner faute de contenu.

Je me suis arrangé pour récupérer dans la page de résultat les données de mon formulaire (avec des "hidden" pour pouvoir les réutiliser plus tard.

Pas facile à expliquer.

Merci aux personnes qui m'ont aidé.

:pouce:

par ouckileou » 22 juil. 2005, 21:06

alors tu peux poster la solution des fois que quelqu'un ait un jour le même problème

puis marquer ton post [Résolu]

merci ;)

par Invité » 22 juil. 2005, 21:02

c'est bon

par pierrax » 22 juil. 2005, 16:24

en fait, je voudrais que si la condition est valide la page reste tel quel pour pouvoir récupérer les valeurs contenus dans mon formulaire

par ouckileou » 22 juil. 2005, 16:19

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

par pierrax » 22 juil. 2005, 16:18

ya plus personnes !! :roll:

par pierrax » 22 juil. 2005, 14:30

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

par pierrax » 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.

par mere-teresa » 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.

par pierrax » 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 !!

par ouckileou » 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>';

par pierrax » 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 ?

par mere-teresa » 22 juil. 2005, 12:02


Pour mieux comprendre, je t'invite à lire cet article :http://julp.developpez.com/php/comparat ... avascript/