Autor Zpráva
Sevo
Profil *
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
Nemůže to ovlivňovat nastavení post_max_size?
Sevo
Profil *
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
A je těch 3000 inputů naprosto nezbytných? Nešla by data třeba smrsknout?
Tori
Profil
Ovlivňuje to tohle nastavení
php_admin_value suhosin.request.max_vars 3002
php_admin_value suhosin.post.max_vars 3002
(vizte konfigur.nastavení). Nevím ale, kde se to dá nastavovat - já to použila v /etc/apache2/sysconfig.d/global.conf bez problémů, ale v .htaccess to vyhazovalo 500-server error. (Původně mi taky chodilo jen těch 1000 form.políček.)
Tori
Profil
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 *
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.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0