PHP中实现接收多个name相同但Value不相同表单数据实例


Posted in PHP onFebruary 03, 2015

最近在一个询盘留言管理系统时候一个问题,留言的前台的表单当中出现很多name值相同的input框,这些框是由用户填写的各不相同的值,现在要迁移到php平台上,而且要求不能改变前台的任何表单(因为用到这个表单的网站实在是太多了,所以必须要考虑转移的兼容性,就连form的提交地址也不能变,必须是提交到某个asp页面上)。form提交地址问题,可以用伪静态或其它方法直接解决。由于以前的系统是由asp做的,asp在处理相同name值的表单的时候,是直接用逗号把前台提交的值连起来,而php却不一样,它接收相同的name的input的时候,是最后一个把前面的值给覆盖掉了。那么,怎么样在不改写前台的基础上,做到能接受到所有name相同的input的值呢?当时脑子里浮现两个想法,第一个是让这个input的name以数组的方式传到后台,然后作出处理,但是很快被否定掉了,因为这样也必须要改动前台的代码,让
<input type="text" name="a" />改成<input type="text" name="a[]" />。第二个想法是php配置当中,有没有类似的设置可以让php像asp这样处理相同name值的表单,查了半天资料,也没有找到。

最后发现,只能退而求其次,稍微改动一下前台,把name换成数组,幸好这样去用的网站并不多。那么接下来就是后台处理数据的问题了,前台的name有一部分改了,这时候就会出现一种情况,php不知道由form提交过来的是字符串还是数组,那么怎么样去做呢,我的办法是写一个函数:

function input_treat($input){
 if(gettype($input)=="string"){
 return htmlentities(trim($input),ENT_QUOTES);
 }else if(gettype($input)=="array"){
 $nd="";
 foreach($input as $v){
  $nd .=htmlentities(trim($v),ENT_QUOTES)." ";
 }
 return $nd;
 }else{
 return false;
 }
}

用input_treat()函数去处理GET或者POST过来的值,如果是字符串,那么把字符串处理一下返回,如果是数组,那么遍历这个输入,用空格把数组的每个元素连起来,然后返回整个连起来的字符串。

这样,整个需求就实现了,缺点是对一部分使用相同name表单的网站必须要更改一下数据,如果你有更好的方法,欢迎和我留言沟通。

PHP 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
php的一个登录的类 [推荐]
Mar 16 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
php 注释规范
Mar 29 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
PHP代码优化技巧小结
Sep 29 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 #PHP
php上传中文文件名乱码问题处理方案
Feb 03 #PHP
php上传文件常见问题总结
Feb 03 #PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 #PHP
php对象在内存中的存在形式分析
Feb 03 #PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 #PHP
php格式化金额函数分享
Feb 02 #PHP
You might like
PHP函数utf8转gb2312编码
2006/12/21 PHP
PHP开发中四种查询返回结果分析
2011/01/02 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python生成lmdb格式的文件实例
2018/11/08 Python
python 构造三维全零数组的方法
2018/11/12 Python
python集合是否可变总结
2019/06/20 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Django 路由控制的实现
2019/07/17 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
婚前协议书范本
2014/04/15 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python