Page 1 of 1

Post Array Keys gehen verloren

Posted: 2010-04-16 23:28
by NickD
Hallo,

ich habe einen Root-Server mit PHP 5.2.6+lenny8 und dem Suhosin Patch 0.9.6.2.
Mir ist nun ein sehr merkwürdiges Problem aufgefallen...wenn ich über ein Formular (Post) ein Array versende, geht der Key verloren bzw. wird durch eine Nummer ersetzt (0,1,2,3...) und ich kann keine strings als Keys benutzen.

Beispiel:

Code: Select all

<form action="" method="post">
<input type="hidden" name="foo[bar]" value="true">
<input type="submit" name="senden" value="senden">
</form>
Beim senden des Forms sollte nun ein Post-Array "foo" enstehen, mit dem key "bar" und dem Value "true".
Daraus wird jedoch ein Post-Array "foo" mit dem key "0" und dem value "true".
Das gleich passiert wenn ich folgendes Formular absende:

Code: Select all

<form action="" method="post">
<input type="hidden" name="foo[4]" value="true">
<input type="submit" name="senden" value="senden">
</form>


oder aus einer nicht durchlaufenden key-nummerierung wird:

Code: Select all

<form action="" method="post">
<input type="hidden" name="foo[1]" value="true">
<input type="hidden" name="foo[3]" value="true">
<input type="hidden" name="foo[5]" value="true">
<input type="submit" name="senden" value="senden">
</form>
folgendes:

Code: Select all

{ ["foo"]=>  array(3) { [0]=>  string(4) "true",[1]=>  string(4) "true",[2]=>  string(4) "true",} ["senden"]=>  string(15) "senden" } 
Ich hatte den Verdacht das es am Suhosin Patch liegt und habe den Simulation mode aktiviert (suhosin.simulation = On), jedoch konnte ich keine Veränderung feststellen bzw. eine Änderung in der PHP.ini.

Hier habe ich mal ein Test-Script hinterlegt: Test

Eine stundenlange Suche über Google brachte ebenfalls keinen Erfolg....ich hoffe ihr könnt helfen!!!

LG

Re: Post Array Keys gehen verloren

Posted: 2010-04-17 16:10
by NickD
Hat keiner eine Idee???

Re: Post Array Keys gehen verloren

Posted: 2010-04-17 16:33
by Joe User
Dat is kein Live-Chat hier...

Re: Post Array Keys gehen verloren

Posted: 2010-04-18 10:39
by NickD
Joe User wrote:Dat is kein Live-Chat hier...
Ich bitte um Entschuldigung!

Re: Post Array Keys gehen verloren

Posted: 2010-04-18 12:43
by Joe User
Halb so wild, aber Dein Problem ist einfach zu speziell, so dass sich selbst bei Google auf die Schnelle keine Lösung finden lässt.
Hast Du schon versucht einen Bugreport zu erstellen?
Es wird vermutlich kein Bug sein, aber dort bekommst Du wahrscheinlich eher eine Lösung oder zumindest eine Erläuterung warum es nicht wie gewünscht funktioniert. Wäre einen Versuch wert...

Re: Post Array Keys gehen verloren

Posted: 2010-04-18 15:23
by jan10001
Unterstützt PHP überhaupt verschachtelte Arrays? Ich glaube nicht und das ist dein Problem. (Das Array wird beim Senden in ein anderes Array gepackt.)
Nebenbei kann der Code ja auch gar nicht gehn, wenn man sich den Ablauf des Scripts vorstellt. Wundert mich das es da keine Error Meldung gab.

Warum machst du es nicht so?

Code: Select all

<form action="" method="post">
<input type="hidden" name="bar" value="true">
<input type="submit" name="senden" value="senden">
</form>
Den Wert fragst du dann mit ab:

Code: Select all

$_POST["bar"];

Re: Post Array Keys gehen verloren

Posted: 2010-04-19 08:36
by Roger Wilco
jan10001 wrote:Unterstützt PHP überhaupt verschachtelte Arrays?

Code: Select all

$ cat test.php ; php test.php
<?php
$verschachtelt = array('Frage' => array('Unterstuetzt', 'PHP', 'ueberhaupt', 'verschachtelte', 'Arrays'),
  'Antwort' => array('Ja', 'Nebensatz' => array('Tut', 'es')));
var_dump($verschachtelt);
?>
array(2) {
  ["Frage"]=>
  array(5) {
    [0]=>
    string(12) "Unterstuetzt"
    [1]=>
    string(3) "PHP"
    [2]=>
    string(10) "ueberhaupt"
    [3]=>
    string(14) "verschachtelte"
    [4]=>
    string(6) "Arrays"
  }
  ["Antwort"]=>
  array(2) {
    [0]=>
    string(2) "Ja"
    ["Nebensatz"]=>
    array(2) {
      [0]=>
      string(3) "Tut"
      [1]=>
      string(2) "es"
    }
  }
}
Siehe auch http://www.php.net/manual/de/language.types.array.php und http://www.php.net/manual/de/language.v ... ternal.php.

Re: Post Array Keys gehen verloren

Posted: 2010-04-19 19:07
by jan10001
Die Frage anders: Unterstützt das CGI Interface überhaupt verschachtelte Arrays? Ich glaube nicht, denn bei der Übertragung der Daten werden diese doch normalerweise als Key/Werte Paare zerlegt. Folglich hätten wir als Key "foo[bar]" und als Wert "true", feststellen das der Key eigentlich ein Array ist kann CGI nicht.

Re: Post Array Keys gehen verloren

Posted: 2010-04-19 20:09
by Roger Wilco
jan10001 wrote:Unterstützt das CGI Interface überhaupt verschachtelte Arrays?
Ja, tut es. Tatsächlich ist dem CGI bzw. dem HTTP sogar egal, ob das verschachtelte Arrays sind, da beide nicht "wissen", was Arrays überhaupt sind und die Daten ganz agnostisch verarbeiten.

Re: Post Array Keys gehen verloren

Posted: 2010-04-19 21:36
by getphp
Es gab mal eine PHP-Version mit diesem Fehler - ich finde aber gerade nichts mehr online dazu. Hast du denn schon ein Update probiert?

Re: Post Array Keys gehen verloren

Posted: 2010-04-19 21:43
by Joe User
PHP-Updates bei Debian? Wieviele schwerwiegende PHP-Bugs sind bei Debian noch offen? Da wird dieser kleine Bug noch lange nicht gefixt sein...

Re: Post Array Keys gehen verloren

Posted: 2010-04-19 23:21
by getphp
Also in der aktuellsten stable von Debian funktioniert es wie es sollte.

Re: Post Array Keys gehen verloren

Posted: 2010-04-21 13:24
by EdRoxter
Deshalb: Dotdeb!

Re: Post Array Keys gehen verloren

Posted: 2010-04-22 00:39
by Anonymous
EdRoxter wrote:Deshalb: Dotdeb!
Sehr genial, Danke :)