我在两台服务器上使用这个版本 - 一个完美运行(较旧的 PHP)而这个不读取 checkbox
元素的 $_POST
数据.
表格:
<form method=post action=fish.php?livewell=1&processrelease=1 enctype="multipart/form-data">Array ( )
<table border=1 width=800>
<tr>
<td></td>
<td>
<CENTER>Fish</td>
<td>
<CENTER>Value</td>
<tD>
<CENTER>Release</td>
<td>
<CENTER>League</td>
</tr>
<tr>
<td>
<CENTER>
<IMG SRC=pics/fish/brook_trout.jpg width=45 title="Brook Trout">
</td>
<td>
<FONT COLOR=green>Brook Trout</font> (
<A HREF=fish.php?guide=1><FONT COLOR=#666666>Regular</font></A>)(
<B>Fish level 9</B>)
<BR>
<FONT COLOR=blue><B>10 inches</B></font>-
<FONT COLOR=purple><B>1 cm</B></font>-
<FONT COLOR=green><B>3.24 mm</B></font>[
<FONT COLOR=brown><B>1.065 lbs</B></font>]
<BR>
</td>
<td>
<CENTER>
<FONT COLOR=green>$0.90</font>
<BR>
</td>
<td>
<CENTER>
<input type="checkbox" value="55" name="lwid[]">
</td>
<td>
<CENTER>
<IMG SRC=bigbertha.gif height=22> This defeats your previous league record for
<FONT COLOR=green>Brook Trout</font> of lbs.
<BR>
</td>
</tr>
</table>
<BR>Running total right now is
<FONT COLOR=green>$0.9</font>
<BR>
<BR>
<input type=submit value="Release Checked Fish">
</form>
但是当我收到一个帖子时 - $lw[]
中的所有数据都是空白的。
接收后代码如下:
$box = $_POST['lwid'];
while (list($key, $val) = @each($lwid)) {
$livewellsel = mysql_query("select * from tblFishCapture where id='$val' and playerId=$stat[id] limit 1");
$lwnum = mysql_num_rows($livewellsel);
if ($lwnum > 0) {
$lw = mysql_fetch_array($livewellsel);
$tfishsel = mysql_query("select name from tblFishTemplates where id='$lw[fishId]' limit 1");
$tfish = mysql_fetch_array($tfishsel);
$label = check_fish_bonus($lw[fishId], $lw[fishSize], 1);
$fbonus = check_fish_bonus($lw[fishId], $lw[fishSize], 0);
$level = get_fish_level($fbonus);
$myval = check_fish_bonus($lw[fishId], $lw[fishSize], 3);
$pn = get_place_name($body[id]);
$ttText = translate_text_googleapi("You release", $languageCode[languageCode]);
$tfish[name] = translate_text_googleapi("$tfish[name]", $languageCode[languageCode]);
$label = translate_text_googleapi("$label", $languageCode[languageCode]);
$ttFishlevel = translate_text_googleapi("Fish level", $languageCode[languageCode]);
$ttBIW = translate_text_googleapi("back into <FONT COLOR=blue>the water</font>", $languageCode[languageCode]);
print "$ttText <FONT COLOR=green>$tfish[name]</font> ($label)(<B>$ttFishlevel $level</B>) $ttBIW.<BR>";
mysql_query("delete from tblFishCapture where playerId=$stat[id] and id='$val' limit 1");
}
}
当我执行 print_r($_post)
时,它显示
数组 ( [lwid] => )
我正在使用这个解决方法,它使我的编程也与新的 PHP 兼容:
if (!isset($PXM_REG_GLOB)) {
$PXM_REG_GLOB = 1;
if (!ini_get('register_globals')) {
foreach(array_merge($_GET, $_POST) as $key => $val) {
global $$key;
$$key = (get_magic_quotes_gpc()) ? $val : addslashes($val);
}
}
if (!get_magic_quotes_gpc()) {
foreach($_POST as $key => $val) $_POST[$key] = addslashes($val);
foreach($_GET as $key => $val) $_GET[$key] = addslashes($val);
}
}
感谢任何帮助。
配置中是否缺少某些内容或与新 PHP 不兼容的内容?
编辑:
使用
Using "$_POST['lwid'];
foreach($_POST['lwid'] as $val) {
// do something
}
仍然返回空结果。
最佳答案
请参阅 official php website 上有关 register_globals
的注释
This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
只需使用 $_POST['lwid']
而不是 $lwid
关于PHP 5.6.16 不读取 $_post 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843535/