Bonjour,
J'ai un problème avec les formulaires.
J'utilise PHP sous mandriva linux 2007 free spring.
Je teste un logiciel de gestion de notes pour un établissement.
(Je suis prof de math!!!)
Je me suis rendu compte que dans un formulaire écrit en php, des données passées
en post sont perdues.
J'ai essayé de modifier la valeur de post-max_size dans ini.php ou bien lors du script php à l'exécution. Sans succès.
La valeur par défaut de post_max_size est 8M.
J'ai écrit les 2 scripts suivants pour tester le problème :
1er script : écriture d'un formulaire en mode post avec 1000 champs hidden :.
Le script après envoi du formulaire, ne conserve que les 200 premières données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <? if (isset($_POST["action"])) { // // Quelque chose a �t� post� // echo count($_POST); foreach ($_POST as $ind => $val) echo $ind . " : " . $val . "<BR>"; echo count($_GET); foreach ($_GET as $ind => $val) echo $ind . " : " . $val . "<BR>"; } else { echo "<form action='hm.php' method='post'>\n"; echo "<input type='hidden' name='action' value='save_data' />\n"; for ($i=0;$i<10000;$i++) { echo "<input type='hidden' name='ligne.$i' value=$i />\n"; } echo "<input type=submit value=envoyer>"; echo "</form>\n"; } ?>
en post (800 champs perdus)
2ème script : écriture d'un formulaire en mode post avec 2 champs hidden
dont le champ ligne contenant les 1000 données concaténées (séparées par des points virgules) :
Ce script affiche bien les 1000 données séparées dans le champ post ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <? if (isset($_POST["action"])) { echo count($_POST); foreach ($_POST as $ind => $val) echo $ind . " : " . $val . "<BR>"; echo count($_GET); foreach ($_GET as $ind => $val) echo $ind . " : " . $val . "<BR>"; } else { echo "<form action='hm.php' method='post'>\n"; echo "<input type='hidden' name='action' value='save_data' />\n"; for ($i=0;$i<10000;$i++) { $val .= $i . ";"; } echo "<input type='hidden' name='ligne' value=$val />\n"; echo "<input type=submit value=envoyer>"; echo "</form>\n"; } ?>
(aucune donnée perdue)
Ma question est la suivante :
Y a-t-il une autre variable dans la configuration de php.ini que post_max_size, qui limiterait le nombre maximum de variables post dans un formulaire ?
Merci de votre aide.
Amicalement.
Partager