PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
最近在做公司项目的时候,发现一个奇怪的问题,递交一个正常表单,竟然发现不能正常获取到递交的值,这一发现,不免让我开始的时候一头雾水,开始的时候一度认为是我的服务有问题,不能正常的写入数据库,后来侦测SQL语句发现,原来问题竟然出现在获取数据上,获取到的数据竟然都是空的,后来一调试发现,原来递交到后端的所有变量,都已经不是预期中的变量,竟然被PHP转化了。
提供测试代码如下:
代码如下:
<html>
<head>
<title>测试表单提交</title>
</head>
<body>
<form action="" method="post">
名字:<input type="text" value="test" name="info.name" /><br/>
密码: <input type="text" value="hahaha" name="info.pwd" /><br/>
QQ: <input type="text" value="961412" name=".info.qq" /><br/>
住址: <input type="text" value="zhejiang" name="info|address" /><br/>
电话: <input type="text" value="123456789" name="1——phone" /><br/>
性别: <input type="radio" name="info_gender" value="1" checked>男 <input type="radio" name="info_gender" value="2">女<br/>
<button type="submit" name="submit" value=""> commit</button>
</form>
</body>
</html>
<?php
if ($_POST) {
echo '<pre/>';
var_export($_POST);
}
?>
代码实例1
运行之后结果如下:
图1
可以看到,所有我在控件中含有的.号,都被后端转化成了_下划线,为了测试其他的一些符号,所以做了如上的测试,至今为止,仅发现点号(.)会被转化为下划线(_),所以导致在后端我想当然的用info.name去访问的时候,不能发现,因为它其实已经被转化成了info_name。
所以以后大家在使用表单的时候,尽量不要用.命名。
相关推荐
-
php表单提交程序的安全使用方法第1/2页
用于显示错误信息和成功信息,其实也可以直接echo出错误信息,这里我只是想我的出错信息页面漂亮点,定义了一个页面输出的函数罢了. 复制代码 代码如下: <?php // savecomment.php// 大家先不要看注释,看完本文后,再回过头来看 require ("config.php"); mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败"); $name=$_POST
-
php表单提交问题的解决方法
在此记录一下,以后不能在同一个地方摔倒了! 数据库为bbs,表为test.三个字段,分别为id,name,sex.id为auto_increment. 连接数据库的php文件conn.php内容为 复制代码 代码如下: $conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误"); mysql_select_db("bbs", $con
-
php 表单提交大量数据发生丢失的解决方法
最近在项目中,出现一个奇怪的现象,有一个大form里面有上千个input,提交的时候,老是发现post过来的数据不完整,一开始还怀疑是html 表单名称有冲突,排除掉了.然后,网上找了一堆,php.ini 的post_max_size和upload_max_filesize都设置了很大的值,没用,nginx的client_max_body_size 500m;加到了那么大的值,也没用.最后终于google到办法:原来PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的
-
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
最近在做公司项目的时候,发现一个奇怪的问题,递交一个正常表单,竟然发现不能正常获取到递交的值,这一发现,不免让我开始的时候一头雾水,开始的时候一度认为是我的服务有问题,不能正常的写入数据库,后来侦测SQL语句发现,原来问题竟然出现在获取数据上,获取到的数据竟然都是空的,后来一调试发现,原来递交到后端的所有变量,都已经不是预期中的变量,竟然被PHP转化了. 提供测试代码如下: 复制代码 代码如下: <html> <head> <title>测试表单提交</title
-
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
最近在做公司项目的时候,发现一个奇怪的问题,递交一个正常表单,竟然发现不能正常获取到递交的值,这一发现,不免让我开始的时候一头雾水,开始的时候一度认为是我的服务有问题,不能正常的写入数据库,后来侦测SQL语句发现,原来问题竟然出现在获取数据上,获取到的数据竟然都是空的,后来一调试发现,原来递交到后端的所有变量,都已经不是预期中的变量,竟然被PHP转化了. 提供测试代码如下: 复制代码 代码如下: <html> <head> <title>测试表单提交</title
-
ajax跨域(基础域名相同)表单提交的方法
本文实例讲述了ajax跨域(基础域名相同)表单提交的方法.分享给大家供大家参考.具体如下: 1.要在做ajax提交的页面中添加如下js语句: <script type="text/javascript"> document.domain="基础域名"; </script> 2.ajax表单提交表单时可以使用一个jquery的一个表单插件jquery.form.js 使用语法如下: //fromPost为要收集数据的form表单的id $(&q
-
layui表单提交到后台自动封装到实体类的方法
第一次用layui,正在摸索中,今天在学习layui的时候在项目中看到一个表单提交,表单的数据传到后台是怎么自动封装到实体类里面的呢? 1.表单中的每一项的name属性值,必须和你所封装的实体中的属性名字一一对应,如果不相同就无法封装. 2.假如你的实体有5个属性,而需要前台输入的只有4个.(假如还有一个属性是id,这个不用输入,由后台给出).封装结束后,这个id属性的值就是null,你只需要自己再给它赋值就好了. 需要用到的包 jsp中的表单: 表单中的name属性的名称对应实体类的属性名称,
-
SpringMVC中使用bean来接收form表单提交的参数时的注意点
这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点: 使用bean来接收form表单提交的参数时,pojo中必须含有默认的(即空的)构造函数,同时,需要设置到bean中的变量必须有setter方法. 注:以下代码均为示例代码,非本人实际运行代码,请自行补充. 例如:我有一个bean类是User,具有变量username和password.同时,表单
-
Flask框架学习笔记之表单基础介绍与表单提交方式
本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将用户输入的数据提交给服务器,并交给服务端进行处理. 表单标签 用于声明表单的范围,位于表单标签的元素将被提交. 语法:<form></form> 属性:Method规定用于发送表单数据的 HTTP 方法. Enctype规定在向服务器发送表单数据之前如何对其进行编码.(适用于 meth
-
angularjs $http实现form表单提交示例
需求:请求第三方后台接口返回一段html字符串如下,由前端去实现form表单的POST提交, 说明:form表单submit()实现自动提交input标签hidden,注意script代码中的document.redirect.submit(); <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head
-
Asp.Net模拟表单提交数据和上传文件的实现代码
如果你需要跨域上传内容到另外一个域名并且需要获取返回值,使用Asp.Net的作为代理是最好的办法,要是客户端直接提交到iframe中,由于跨域是无法用javascript获取到iframe中返回的内容的.此时需要在自己的网站做一个动态页作为代理,将表单提交到动态页,动态页负责将表单的内容使用WebClient或HttpWebRequest将表单数据再上传到远程服务器,由于在服务器端进行操作,就不存在跨域问题了. WebClient上传只包含键值对的文本信息示例代码: 复制代码 代码如下: str
-
JSP之表单提交get和post的区别详解及实例
JSP之表单提交get和post的详解及实例 一 get和post的区别 二 实战(post方式提交) 1.login.jsp <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> <% String path = request.getContextPath(); String basePath = req
-
Vue form 表单提交+ajax异步请求+分页效果
废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="UTF-
随机推荐
- Centos 下搭建FTP上传下载服务器的方法
- 在VirtualBox上安装CentOS7(图文步骤)
- win2008 R2搭建php网站环境分析
- asp.net 通过指定IP地址得到当前的网络上的主机的域名
- 详解C#中的out和ref
- AsyncTask陷阱之:Handler,Looper与MessageQueue的详解
- C++中的函数指针与函数对象的总结
- jQuery实现平滑滚动的标签分栏切换效果
- Java消息队列的简单实现代码
- 在EditPlus实现asp(VBScript)的自动完成和函数列表
- 有关C++中类类型转换操作符总结(必看篇)
- 浅谈防不胜防的unsigned int的运算
- 详解Android 在 ViewPager 中使用 Fragment 的懒加载
- Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题
- 利用 fsockopen() 函数开放端口扫描器的实例
- 网络管理之网关篇
- vue.js element-ui tree树形控件改iview的方法
- 详解各版本React路由的跳转的方法
- python字典排序的方法
- Docker-compose一键部署gitlab中文版的方法步骤