Autor | Zpráva | ||
---|---|---|---|
Sevo Profil * |
#1 · Zasláno: 11. 7. 2011, 17:40:46
Zdravim,
narazil som na takyto problem. Spravil som na stranke form ktory ma v tomto pripade 3000 input poli. Pri odoslani formulara sa ale do vystupu prevedie len prvych 1000 a ostatne sa v $_POST premennej ignoruju. Na lokalnom stroji kde mam WAMP server (Win) to ide normalne - odosle sa vsetkych 3000. Ale ked som to skusil na Linuxe na Apache2 s PHP5 tak mi to spravilo tento zadrhel. Skusal som aj nastavenie v konfigu php: memory_limit "128M" - to by malo stacit Kde je problem? <?php foreach ($_POST as $aaa => $Hodnota) { echo $aaa." => ".$Hodnota."<br>"; } echo '<form method="post">'; for ($i = 0; $i < 300; $i++) { for ($i2 = 0; $i2 < 10; $i2++) { echo '<input type="text" name="'.$i.'_'.$i2.'" value="adsada sdasda sdsa'.$i.$i2.'" />'; } echo '<br>'."\n"; } echo '<input type="submit" value="ok" name="ok" />'; echo '</form>'; ?> |
||
Tori Profil |
#2 · Zasláno: 11. 7. 2011, 18:23:14
Nemůže to ovlivňovat nastavení post_max_size?
|
||
Sevo Profil * |
#3 · Zasláno: 11. 7. 2011, 18:26:20
Tori:
To som skusal tiez. Nepomohlo. Porovnal som dokonca aj php.ini aj va Win a aj na Linuxe - aj pri uplne rovnakych to stale robi :( |
||
Darker Profil |
#4 · Zasláno: 11. 7. 2011, 18:53:16
A je těch 3000 inputů naprosto nezbytných? Nešla by data třeba smrsknout?
|
||
Tori Profil |
#5 · Zasláno: 11. 7. 2011, 19:29:27
Ovlivňuje to tohle nastavení
php_admin_value suhosin.request.max_vars 3002 php_admin_value suhosin.post.max_vars 3002 |
||
Tori Profil |
#6 · Zasláno: 11. 7. 2011, 20:10:03 · Upravil/a: Tori
Docela proveditelná možnost se mi zdá rozdělit výstup do několika (málo) částí a každou serializovat. Příklad pole o 10k položkách.
if ($_POST) { $c=0; $out = '<br>Indexy: <br>'; foreach($_POST['data'] as $part) { $val = unserialize(urldecode($part)); foreach($val as $i=>$inval) { $c++; $out .= "<br>$i = $inval"; } } echo "Přišlo $c poli"; echo '<br>POST data = '.strlen(file_get_contents('php://input'))."bytes $out"; } else { echo '<form method="post">'; echo '<input type="submit" value="ok">'; for ($i = 0; $i < 10; $i++) { $vars = array(); for ($i2 = 0; $i2 < 1000; $i2++) $vars["$i$i2"] = "adsada sdasda sdsa$i$i2"; echo '<input type="hidden" name="data[]" value="'.urlencode(serialize($vars)).'">'; } echo '</form>'; } |
||
Sevo Profil * |
#7 · Zasláno: 11. 7. 2011, 22:16:03
Tori:
Super, takže dá sa to nastaviť naozaj takto: php_admin_value suhosin.request.max_vars 3300 php_admin_value suhosin.post.max_vars 3300 je na to priamo suhosin.ini Ale aj to druhé riešenie mi pripadá veľmi zaujímavo. Ešte porozmýšľam aj nad týmto. Mám tam aj polia čo sa budú editovať takže cez hidden to asi riešiť nebudem. Už ma aj napadá nejaké riešenie. Ďakujem. |
||
Časová prodleva: 14 let
|
0