[RESOLU] Etrange limite lors d'un formulaire ?

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 : [RESOLU] Etrange limite lors d'un formulaire ?

Re: Etrange limite lors d'un formulaire ?

par Couin » 07 janv. 2015, 23:37

Hello ,

Tesmet, impec, c'est bien cela (max_input_vars) . Modifié par l'ajout d'une ligne max_input_vars = 10000 dans php.ini de Wamp / PHP.
Le post max size étant déjà modifié à 1 Go (car j'ai une page permettant d'envoyer des gros fichiers aussi donc j'avias fais cette modif).

Tof73 : $counter = 0; c'est pour créer la variable $counter avant de l'incrémenter lors du premier tour de boucle (sans ca, il peut pas incrémenter uen variable qui n'existe pas).

Merci à vous deux :)

Re: Etrange limite lors d'un formulaire ?

par tesmet » 07 janv. 2015, 03:31

Bonne année
Dans la page edit_result.php , je récupère la variable $counter et je l'affiche :
	$counter = $_POST["counter"];
	echo $counter;
Si le fichier a <= 111 lignes, la valeur de $counter s'affiche, si il a plus de 111 lignes, je reçois une belle insulte " Notice: Undefined index: counter in D:\ww .... ".
Si $_POST est totalement vide, alors c'est la limite mémoire post_max_size qui est dépassée. Mais j'en doute car elle est par défaut à 8M, ce qui laisse tout de même 75K pour chacune des 111 "lignes".

Par contre depuis PHP 5.3.9, il y a max_input_vars affectant $_GET, $_POST et $_COOKIE pour sécuriser contre les attaques DoS. Et la façon dont le script est écrit, je crois que la limite par défaut de 1000 est dépassée au environ de 111 "lignes".
<?php

echo 'post_max_size=', ini_get('post_max_size'), '<br/>';
echo 'max_input_vars=', ini_get('max_input_vars'), '<br/>';

?>

Re: Etrange limite lors d'un formulaire ?

par tof73 » 07 janv. 2015, 01:27

quid avec
$counter = 0;
?

Etrange limite lors d'un formulaire ?

par Couin » 07 janv. 2015, 01:18

Hello et bonne année à tous :)

Voilà, je suis confronté à une étrangerie sur laquelle je cale.
J'utilise des fichiers csv comem modèle pour importer des données.
J'ai un formulaire permettant de modifier un modèle au choix.
La page d'édition transforme le fichier cvs choisi, en tableau avec des valeurs tirées du CSV. Pour certaines valeurs, j'impose une ligne de valeurs possibles tirées d'une table chacune. Le csv est épluché par un while le tableau de valeurs s'affiche comme il se doit.
A chaque linge j'incrémente un compteur dont je veux envoyer la valeur lors du submit du formulaire.
Si une ligne n'a pas le premier champs sous forme d'heure, elle est zappée par un continue; .
Seulement, lorsque je soumet le formulaire, si le fichier csv a plus de 111 lignes, la valeur (malgré que je l'affiche bien en bas du tableau d'édition, n'est pas envoyée.
Voici le code du forumulaire d'édition du modèle (pour simplifier, je mets la version sans liste de valeurs tirées de tables sql car le problème est le même dnas les deux cas) :
<form name="edit_result" action="edit_result.php" method="POST">
<table border="1">
		<tr>
		<td>Arrivee_T</td>
		<td>Liaison</td>
		<td>Prestaire</td>
		<td>Provenance</td>
		<td>Véhic.</td>
		<td>TBEF</td>
		<td>Commentaire</td>
		</tr>
<?
	$id  = $_GET["idFile"] ;
	$idFile = $id;
	$id = '../importer/models/'.$id ;
	$File = fopen($id, "r");
	$counter = '0';
	while (($objArr = fgetcsv($File, 10000, ";")) !== FALSE) 
	{ 
	 $databaseTimePattern = '/^(0[0-9]|(1[0-9])|(2[0-3])):[0-5][0-9]:[0-5][0-9]$/'; //Matches times in the form hh:mm
	$value = $objArr[0];
		if (preg_match($databaseTimePattern, $value)) {
		$counter = $counter + 1;
		?>
		<input type="hidden" name="id" value="<? echo $id; ?>">
		<input type="hidden" name="idFile" value="<? echo $idFile; ?>">		
		<tr>
		<td><input type="time" name="arrivee_t<? echo $counter; ?>" value="<? echo substr("$objArr[0]",0 ,5); ?>"></td>
		<td><input type="text" name="liaison<? echo $counter; ?>" value="<? echo $objArr[1]; ?>"></td>
		<td><input type="text" name="presta<? echo $counter; ?>" value="<? echo $objArr[2]; ?>"></td>
		<td><input type="text" name="come_from<? echo $counter; ?>" value="<? echo $objArr[3]; ?>"></td>
		<td><input type="text" name="vehic<? echo $counter; ?>" value="<? echo $objArr[4]; ?>"></td>
		<td><input type="time" name="tbef<? echo $counter; ?>" value="<? echo substr("$objArr[5]",0 ,5); ?>"></td>
		<td><input type="text" name="comment<? echo $counter; ?>" value="<? echo $objArr[6]; ?>"></td>
		</tr>
	<?	
		} else {
		continue;
		}
	}
	fclose($File);
?>
</table>
<? echo $counter; ?>
<input type="hidden" name="counter" value="<? echo $counter; ?>">
<input name="file" type="submit" name="submit" value="Enregistrer les modifications">
</form>
Dans la page edit_result.php , je récupère la variable $counter et je l'affiche :
	$counter = $_POST["counter"];
	echo $counter;
Si le fichier a <= 111 lignes, la valeur de $counter s'affiche, si il a plus de 111 lignes, je reçois une belle insulte " Notice: Undefined index: counter in D:\ww .... ".

Là je cale sérieusement car pourquoi 11 lignes et pas plus ni moins ? Et même pourquoi cette limite ?

Donc si quelq'un a un tuyau, je suis preneur :D

M'ciiiiii !
Couin