Sven Rautenberg: assoziativ array und $_POST

Beitrag lesen

Moin!

Es ist anzumerken, dass der Datentransfer von Strings, die Zeilenschaltungen (\r oder \n) enthalten, genau dann SCHEITERT, wenn man das Formularfeld vom Typ hidden auf Typ text ändert, oder eine Textarea verwendet.

Der Grund: Die HTML-Interpretation des Quelltextes greift in die Darstellung der Zeilenschaltung ein, wenn der Textinhalt des Feldes sichtbar dargestellt werden soll.

Dieses Skript funktioniert bei mir in allen drei Browsern (Op, FF, IE):

  
<?php  
echo "<pre>";  
  
// ein komplexes Array  
$array = array('keytest' => 'val   "test"   ', 3=> "\r\n   \t\t\tdrei   spaces   ", array(1,2,3,4,5));  
echo "\n\nDas Array\n";  
var_dump ($array);  
  
$ser = serialize($array);  
echo "\n\nSerialisiert:\n";  
var_dump ($ser);  
  
echo "\n\nFormular\n";  
  
echo '<form action="" method="post"><input type="hidden" name="test" value="'.htmlspecialchars($ser,ENT_QUOTES).'" size="100"><input type="submit"></form>';  
  
if (isset($_POST['test']))  
{  
  echo "\n\nPOST-Daten:\n";  
  var_dump($_POST['test']);  
  
  echo "\n\nUnserialisiert:\n";  
  $var = unserialize($_POST['test']);  
  var_dump($var);  
  echo ($array === $var ? "identisch": "nicht identisch");  
}  
echo "</pre>";  
?>  

- Sven Rautenberg

--
"Love your nation - respect the others."