ID: 19474 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Closed Bug Type: Variables related Operating System: FreeBSD 4.X PHP Version: 4.2.3 New Comment:
Are you using the "mb" extension? i.e. did you compile it to enable multi-byte support? If so, you (or your ISP) need to get the latest "mbstring.c" file from the CVS and recompile and reinstall. The problem lies in mbstring.c and it has been fixed by its author. ---ends--- Previous Comments: ------------------------------------------------------------------------ [2002-09-20 06:05:53] [EMAIL PROTECTED] This bug is not restricted to checkbox's! I think it applies to all input types.. The following example is a modification of the first test script but using text inputs. I asked my ISP to apply the recommended recompile config but it didn't work! PLEASE HELP ---sample form starts--- <html> <head> </head> <form action="phptest.php" method="POST"> 0 <input type=text name=somevar[] value="01234567890abcdefghijklmnopqrstu">01234567890abcdefghijklmnopqrstu<br> 1 <input type=text checked name=somevar[] value="abcdefghijklmnopqrstu">abcdefghijklmnopqrstu<br> 2 <input type=text checked name=somevar[] value="01234567">01234567<br> 3 <input type=text checked name=somevar[] value="0123456">0123456<br> 4 <input type=text checked name=somevar[] value="012345">012345<br> 5 <input type=text checked name=somevar[] value="01234">01234<br> 6 <input type=text checked name=somevar[] value="0123">0123<br> 7 <input type=text checked name=somevar[] value="012">012<br> 8 <input type=text checked name=somevar[] value="01">01<br> 9 <input type=text checked name=somevar[] value="0">0<br> 10 Text <input type=text name=somevar[] value="ABCDEFGHI"><br> <input type="submit" value="OK"> <hr> <P> <? $somevar_arr = $_POST["somevar"]; if( sizeof( $somevar_arr ) ) { for( $i = 0; $i < count( $somevar_arr ); $i++ ) { printf("somevar[%d]: %s <br>", $i, $somevar_arr[$i] ); } } for( $i = 0; $i < count( $_ENV ); $i++ ) { if ($ENV[$i]) { printf("env[%d]: %s <br>", $i, $ENV[$i] ); } } ?> </body> </html> ---scripts ends --- Results generated by script: somevar[0]: 4567890abcdefghijklmnopqrstu somevar[1]: efghijklmnopqrstu somevar[2]: 4567 somevar[3]: 456 somevar[4]: 45 somevar[5]: 4 somevar[6]: somevar[7]: 012 somevar[8]: 01 somevar[9]: 0 somevar[10]: EFGHI ------------------------- ------------------------------------------------------------------------ [2002-09-18 05:55:32] [EMAIL PROTECTED] This bug has been fixed in CVS. In case this was a PHP problem, snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. In case this was a documentation problem, the fix will show up soon at http://www.php.net/manual/. In case this was a PHP.net website problem, the change will show up on the PHP.net site and on the mirror sites in short time. Thank you for the report, and for helping us make PHP better. Already fixed, recompile --without-mb-str-enc (or simlilar) to make this go away with 4.2.3. Derick ------------------------------------------------------------------------ [2002-09-18 05:52:20] [EMAIL PROTECTED] When checkboxes are used in a form with arrays (e.g. name=something[]) values retrieved from the resulting $_POST[something] array are trunacted. In fact, the first 4 bytes are truncated. If values are POSTED one by one, i.e. not via an array, things seem to work. The same script used to work on 4.2.2. I discovered this problem after upgrading to 4.2.3 ---sample form starts--- <html> <head> </head> <form action="prob1.php" method="POST"> <input type=checkbox name=somevar[] value="01234567890abcdefghijklmnopqrstu"> 01234567890abcdefghijklmnopqrstu<br> <input type=checkbox name=somevar[] value="abcdefghijklmnopqrstu">abcdefghijklmnopqrstu<br> <input type=checkbox name=somevar[] value="01234567">01234567<br> <input type=checkbox name=somevar[] value="0123456">0123456<br> <input type=checkbox name=somevar[] value="012345">012345<br> <input type=checkbox name=somevar[] value="01234">01234<br> <input type=checkbox name=somevar[] value="0123">0123<br> <input type=checkbox name=somevar[] value="012">012<br> <input type=checkbox name=somevar[] value="01">01<br> <input type=checkbox name=somevar[] value="0">0<br> <input type="submit" value="OK"> </body> </html> ---sample form ends--- ---PHP used to process above starts--- <html> <head> </head> <? $somevar_arr = $_POST["somevar"]; if( sizeof( $somevar_arr ) ) { for( $i = 0; $i < count( $somevar_arr ); $i++ ) { printf("somevar[%d]: %s <br>", $i, $somevar_arr[$i] ); } } for( $i = 0; $i < count( $_ENV ); $i++ ) { printf("env[%d]: %s <br>", $i, $ENV[$i] ); } ?> <hr> </body> </html> ---scripts ends --- Results generated by script: somevar[0]: 4567890abcdefghijklmnopqrstu somevar[1]: efghijklmnopqrstu somevar[2]: 4567 somevar[3]: 456 somevar[4]: 45 somevar[5]: 4 somevar[6]: somevar[7]: 012 somevar[8]: 01 somevar[9]: 0 ------------------------- ===end of report=== ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=19474&edit=1