8791 sujets

Développement web côté serveur, CMS

Bonjour,
Je vous écris car je suis bloqué sur ce problème :
J'ai un formulaire pour permettre d'uploader plusieurs fichiers :

<form method="post" action="include/gestion_form.php" id="ajout_pop" enctype="multipart/form-data">
		<input type="hidden" id="id_pop" name="id_pop" value="13"/>
		<p class="titre_pop"> Ajouter des photos <span id="ajout_champ"></span></p>
				<div class="iblock photo_pop ">
			<p class="sous_titre_pop"> Photo n°1</p>
			<label for="desc_pop0">Déscription :</label>
			<input type="text" id="desc_pop0" name="desc_pop0" class="champ_pop" value="Vide"  />
			<label for="chg_pop0">Changer la photo secondaire :</label>
			<input type="file" id="chg_pop0" name="chg_pop0" class="champ_pop" />
		</div>
				<div class="iblock photo_pop ">
			<p class="sous_titre_pop"> Photo n°2</p>
			<label for="desc_pop1">Déscription :</label>
			<input type="text" id="desc_pop1" name="desc_pop1" class="champ_pop" value="Vide"  />
			<label for="chg_pop1">Changer la photo secondaire :</label>
			<input type="file" id="chg_pop1" name="chg_pop1" class="champ_pop" />
		</div>
				<div class="iblock photo_pop cache">
			<p class="sous_titre_pop"> Photo n°3</p>
			<label for="desc_pop2">Déscription :</label>
			<input type="text" id="desc_pop2" name="desc_pop2" class="champ_pop" value="Vide"  />
			<label for="chg_pop2">Changer la photo secondaire :</label>
			<input type="file" id="chg_pop2" name="chg_pop2" class="champ_pop" />
		</div>
				<div class="iblock photo_pop cache">
			<p class="sous_titre_pop"> Photo n°4</p>
			<label for="desc_pop3">Déscription :</label>
			<input type="text" id="desc_pop3" name="desc_pop3" class="champ_pop" value="Vide"  />
			<label for="chg_pop3">Changer la photo secondaire :</label>
			<input type="file" id="chg_pop3" name="chg_pop3" class="champ_pop" />
		<!-- Il y a 9 champs en tous -->

		<label for="valider_pop"></label><input type="submit" id="valider_pop" name="valider_pop" value="Ajouter les photos" /><div class="clear"></div>
	</form>

Quand j'envoie, selon les photos choisit, ça passe ou pas.
Je m'explique, une , deux , trois photo ça passe voir plus selon le poids des photos.
Lorsque je remplis les 9 champs et que je valide, mon script de traitement ne reconnait pas le $_POST['valider_pop'] et passe dans le else.
Dans le else j'ai fait un var_dump de $_POST => vide, un var_dump de $FILES => vide
Le script :

if(isset($_POST['valider_pop'])){
	$id = (int)$_POST['id_pop'];
	$i=0;$l=10;$erreur = '';$image = 'tot';
	for($i;$i<$l;$i++){
		$pic[$i] = image_pop('chg_pop'.$i,'../Images/chevaux/');
		if($pic[$i] === 'erreur'){ 
			$erreur.= 'Une erreur est survenu pour le chargement de la photo n°'.$i.'</br>';
		}else if($pic[$i] === 'erreur_extension'){
			$erreur.= 'La photo n°'.$i.' ne posséde pas une extension autoriser.</br> Les extensions autorisés sont : jpg, jpeg, gif, png <br />';
		}else if( $pic[$i] === 'erreur_size'){
			$erreur.= 'La photo n°'.$i.' est trop volumineuse. Merci de réduire son poids.</br>';
		}else if( $pic[$i] !== false){
			$image.= $pic[$i].'|';
		}
	}
	
}
else{
	var_dump($_FILES);die;
}

=> image_pop traite les images (teste si le fichier n'est pas trop gros, bonne extension et le déplace vers le fichier voulu.

Est ce que le poids des fichiers est trop gros ?
Je ne comprends pas pourquoi $_POST et $FILES sont vide.
Pourquoi il ne rentre pas dans mon if et passe au else alors que je clique sur le input name="valider_pop" ?
Smiley sweatdrop

Est ce quelqu'un aurait une explication ?

Merci beaucoup Smiley cligne
Bonjour renard13,

Tu as regarder dans ton php.ini la ligne sur la taille maximum des fichiers à envoyer :

upload_max_filesize = 2M

Par défaut c'est 2 Mo. Il est possible que cela bloque l'envoi de ton formulaire si le fichier est trop gros
Merci beaucoup toukilbv.
J'ai regardé et upload_max_filesize est à 2M

Pour l'instant je suis sur WAMP.

Ce que je ne comprends pas c'est pourquoi le dépassement fait que le script ne rentre plus dans mon if et passe au else.
Pourquoi ça efface le $_POST et les $_FILES ?

Qu'est ce qu'il est possible de faire pour savoir si la limite est dépassée ?

Encore merci pour ta réponse. Smiley smile
Re,
Voici le message de warning que je viens de voir apparaitre :

Warning: POST Content-Length of 8462217 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

=> Comment attraper cette erreur et lui dire quoi faire ?

Merci
Bonjour,
Après avoir effectué une recherche sur le net, je pense avoir trouvé la solution à ton problème.

Il s'avère que si la limite de la variable post_max_size est plus petite que la limite de la valeur upload_max_filesize, $_POST et $_FILES seront vides. Il en va de même si les données contenues dans $_POST dépassent la valeur de post_max_size.
(source --> http://us.php.net/manual/en/ini.core.php#ini.post-max-size )

Va donc dans ton php.ini, et augmente la taille de post_max_size (sans oublier qu'il faut qu'elle soit plus grande que upload_max_filesize (tant qu'à faire, augmente aussi la taille de upload_max_filesize, parce que si tu as 9 fichiers à uploader tu vas surement dépasser la limite de base qui doit être de 2Mo de mémoire))
Modifié par GroquikMLV (12 Jul 2013 - 11:33)