为啥表单提交,总会自动加一个 $_POST['0']
表单name 字段,我是用的是中文,例如:<input name="姓名" type="text>然后,在php端, 打印 $_post ,总是会自动添加一个 $_post['0']的变量,他的值就等于我表单数据的最后一项。
加入: 表单$_POST['姓名'] $_POST['年龄'], 就会多一个$_POST['0'] ==$_POST{年龄}的取值
我必须每个表单都手工 unset $_POST ,不然数据库插入和更新就报错
求指点,这是什么鬼 先用 chrome 的调试工具看一下是不是提交了什么东西,我可以肯定 CI 不会给你添加额外东西的。 这是HTML:
<form action="/Formtest" method="post">
<!--用英文时没问题-->
<input type="text" name="id">
<input type="text" name="age">
<button type="submit">Submit</button>
这是 PHP:
class Formtest extends CI_Controller{
function index() {
print_r($_POST);
}
}
这是英文结果: Array ( => 张三 => 20 )
现在一切看起来ok,CI也没有给我额外加什么东西。 下来开始魔术时刻,只需要将html 代码中的 name="id" 改为中文 name="姓名"
<input type="text" name="姓名">
<input type="text" name="年龄">
奇迹就来了:Array ( [姓名] => 张三 [年龄] => 20 => 20 ) 我用的是php7, 360浏览器,IE浏览器都换过,肯定不是浏览器给我加的。
这种针对中文的操作,不知道有什么讲究? 我用纯php7 也测试了,也没问题,不会添加。
现在结果:
1, 用纯粹php7 ok没问题。
2,换了浏览器和机器,也都没问题,ok。
可以确认,就是ci处理中文表单的时候,加的这个$_POST他的值总等于原表单的最后一项。
问题:1 为啥要自动添加?2,在哪里配置取消? wpcolor 发表于 2018-7-17 09:29
这是HTML:
不要把 name 改成中文,这是不合规矩的,这里一定要使用英文,这个 name 就是字段名,不要使用中文,没有这种操作。这个地方用户看不到,所以完全没有必要使用中文,会造成很多问题。 wpcolor 发表于 2018-7-17 09:45
我用纯php7 也测试了,也没问题,不会添加。
现在结果:
1, 用纯粹php7 ok没问题。
从你这个测试结果来说,只能说是 CI 不支持中文,毕竟是外国人写的东西。所以你在编程的时候,要尽量在任何地方避免使用中文,这是一个好习惯。毕竟计算机是外国人发明的,尽量使用英文,会让你的开发体验更愉快。
你要是对为什么会这样感兴趣,你可以看一下 input.php 这个类库,所有输入都是在这里处理的。
页:
[1]