带有复选框数组的PHP代码在实际站点中不起作用,但在本地主机中有效

时间:2015-03-28 20:54:08

标签: php html

英语不是我的母语;请原谅输入错误。

我有一个非常奇怪的PHP代码问题,使用复选框数组。 这是一个俄语真实网站中的简单复选框代码,我帮助我的朋友修复: http://astrabis.ru/teoria/test2.php

主机具有PHP版本5.3.13。

但是这段代码,YES,在我的本地PC(Windows 7,安装了Xamp Appache)PHP版本5.6.3中工作。我已经安装了PHP服务器来调试我描述的问题这里。

问题描述。文件test2.php中的复选框在浏览器上完美显示,但当我检查其中一些并按提交时,服务器不会将任何数据移动到处理数据的testrez2.php文件。

详情。 在文件test2.php中有三个复选框数组:vata [] pita [] kapha [] test2.php代码片段:

<!DOCTYPE html>
<html>
<head>
...
<meta http-equiv=Content-Type content="text/html; charset=windows-1251" /><meta name=viewport content="width=device-width, initial-scale=1" />
...
</head>
...
<form action="http://www.astrabis.ru/teoria/testrez2.php" method="post">
...
<table cellspacing="1px">
<tbody>
<tr><td rowspan="3">????</td><td><input name="vata[]" type="checkbox" value="2">???????, ??????????; ???????????, ??????????? ?? ???????? ?????????, ???????????? ????????, ??????? ? ??? ?????? ? ? ??? ??????.</td></tr>
<tr><td><input name="pita[]" type="checkbox" value="2">???????????, ?????????????????, ????????????, ?????? ????, ????? ???????. ???????????? ???. ???????????? ???????? ? ????, ???? ??????? ??????? ???? ?? ????????????????? ????????.</td></tr>
<tr><td><input name="kapha[]" type="checkbox" value="2">?????????, ??????, ??????????, ?? ???????????? ???????.</td>
...
...
<tr><td rowspan="3">?????</td><td><input name="vata[]" type="checkbox" value="2">??????????? ? ????? ? ???????????.</td></tr>
<tr><td><input name="pita[]" type="checkbox" value="2">??????????? ? ?????????? ???????????, ?????? ?????????.</td></tr>
<tr><td><input name="kapha[]" type="checkbox" value="2">??????????? ? ????????????? - ????????,???????? ? ?.?.</td>
</tr>
</tbody>
</table>

结果处理的文件testrez2.php有一些简单的matematic,但我添加了一些调试代码来查看输入数据和其他信息 testrez2.php代码片段:

...
<?php
echo "<br>vata : ";
print_r(array_values($_POST['vata']));
echo "<br>pita : ";
print_r(array_values($_POST['pita']));
echo "<br>kapha : ";
print_r(array_values($_POST['kapha']));

$x=0;
$y=0;
$z=0;

if (isset($_POST['vata']))
{$x=array_sum($_POST['vata']);}

if (isset($_POST['pita']))
{$y=array_sum($_POST['pita']);}

if (isset($_POST['kapha']))
{$z=array_sum($_POST['kapha']);}

$sum=$x+$y+$z;

//debug
echo "<br>x : $x";
echo "<br>y : $y";
echo "<br>z : $z";
echo "<br>sum : $sum";

更多的是,从历史上看,我开始从网站调试另一个文件,并在文件testrez3.php中添加了相同的代码(它由同一个真实网址的test3.php激活)。它与上面的文件testrez2.php中显示的调试打印代码相同。

对test3.php和testrez3.php已经工作了好几天并且停止了同样的问题!

我还在文件test2.php testrez2.php中将POST方法改为GET方法 ()。我想在浏览器Chrome的地址栏中看到复选框数据确实已发送到服务器。它发送了!但是testrez2.php也没有收到任何数据。

见下面两个匹配&#34;获取&#34;:真实网站和我的PC本地主机

本地主机/ astrabis / astrabis.ru /测试/ testrez2.php瓦塔%5B%5D = 2及?皮塔%5B%5D = 2及卡法%5B%5D = 2及瓦塔%5B%5D = 2及皮塔%5B%5D = 2及卡法%5B%5D = 2

astrabis.ru/teoria/testrez2.php?vata%255B%255D=2&pita%255B%255D=2&kapha%255B%255D=2&vata%255B%255D=2&pita%255B%255D = 2及卡法%255B%255D = 2

1 个答案:

答案 0 :(得分:0)

看看区别:

pita%5B%5D=2

本地vs:

pita%255B%255D=2

如果你urldecode pita%5B%5D你会得到pita [],但是另一个是urlencoded,如果你解码它就会得到pita%5B%5D。那是你的问题。您应该检查双重urlencode来自哪里。 我在你发布的代码中没有看到任何内容,所以也许是服务器设置。

相关问题