Mailinglisten-Archive |
Clemens Staub schrieb am Donnerstag, den 7. Oktober 1999: > Situation: > ich schicke aus einer multipart/form-data FORM eine File > (Ich habe an die MAX_FILE_SIZE gedacht) an ein Skript. > > Die INPUT Felder sind mit "data[]" benannt, das geht soweit > auch gut. Ich kann $data_name[0], $data_type[0] etc... auslesen. Tatsächlich? Nach meinen eigenen Tests (allerdings mit einem alten PHP V3.0.2a) geht nämlich schon das nicht und es werden Variablen mit den Namen 'data[]', 'data[]_name', 'data[]_type' und 'data[]_size' erzeugt, die man so gar nicht selber erzeugen erzeugen oder nutzen kann, außer per $GLOBAL['data[]_name']. > Problem : > Jetzt aber, wenn ich mehrere INPUT Felder mit "data[]" benenne, die > File also nachher z.B. mit $data[5] aufrufe, existiert nur noch die > Variable $data[5], die entsprechenden $data_name[5] nicht mehr, das > geht auch nicht wenn ich die das INPUT FELD eindeutig mit data[5] > benenne ! Genau das gleiche hier. Du könntest z.B. $GLOBALS['data[5]'] und $GLOBALS['data[5]_name'] verwenden. So ganz in Deinem Sinne ist das aber nicht ... ;-) Die kurze Antwort ist also, daß Du beim File-Upload nicht mit Arrays arbeiten kannst, sondern normale Variable verwenden solltest. Eine nur mittelhäßliche Ausweichmöglichkeit wäre noch, daß Du im Formular _doch_ 'data[0]', 'data[1]' usw. als Feldnamen verwendest, und dann im PHP-Skript die dadurch entstehnden Variablen am Anfang in ein echtes Array umträgst: for($i=0; isset($GLOBALS["data[$i]"]); $i++ ) { $data[$i] = $GLOBALS["data[$i]"]; $data_name[$i] = $GLOBALS["data[$i]_name"]; $data_type[$i] = $GLOBALS["data[$i]_type"]; $data_size[$i] = $GLOBALS["data[$i]_size"]; } Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 5244 5EF3 B0B1 3826 E4EC 8058 7B31 3AD7
php::bar PHP Wiki - Listenarchive