#20402 [Opn->Bgs]: _FILES unintuitive when arrays used.

From: Date: Tue, 12 Nov 2002 23:01:09 +0000
Subject: #20402 [Opn->Bgs]: _FILES unintuitive when arrays used.
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-24758@lists.php.net to get a copy of this message
ID: 20402 Updated by: sniper@php.net Reported By: sthomas@townnews.com -Status: Open +Status: Bogus Bug Type: Variables related Operating System: Redhat 7.3 PHP Version: 4.2.3 New Comment: This is not gonna change. And it's not bug. Previous Comments: ------------------------------------------------------------------------ [2002-11-12 15:04:13] sthomas@townnews.com PHP seems to mix up array-based file uploads. In the simple example code I've attached, pick any two files, and you'll get an array that looks like this: $_FILES = [thing]=> Array ( [name][test] => ... [type][test] => ... [tmp_name][test] => ... [error][test] => ... [size][test] => ... ) [other] => Array ( [name] => ... [type] => ... [tmp_name] => ... [error] => ... [size] => ... ) But you'd expect from how the last array works, that the elements: name, type, tmp_name, error, size, are associated with the actual uploaded file. In that case, you'd expect: [thing]=> Array ( [test] => Array ( [name] => ... [type] => ... [tmp_name] => ... [error] => ... [size] => ... ) ) [other] => Array ( [name] => ... [type] => ... [tmp_name] => ... [error] => ... [size] => ... ) This makes the $_FILES variable virtually impossible to use in a foreach or while context, as all of the associated elements are not associated with the array elements, but vice versa. This is also the crux of the problem that caused $_FILES to be removed from $_REQUEST in CVS. Since, if I have an element named stuff[name] in a form upload, and a file called stuff[thing], then the $_REQUEST variable would contain stuff[name][thing] when it should be stuff[thing][name] and stuff[name] as separate elements. ------------------- Attached Code ------------------- <form method="post" action="<?PHP print $_SERVER['PHP_SELF']; ?>" enctype="MULTIPART/FORM-DATA"> <input type="file" name="thing[test]"> <input type="file" name="other"> <input type="submit" value="Submit"> </form> <pre> <?PHP print_r($_FILES); ?> </pre> ------------------- Attached Code ------------------- ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20402&edit=1

« previous php.bugs (#24758) next »