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 相关文章推荐
十天学会php(1)
Oct 09 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
更改localhost为其他名字的方法
Feb 10 PHP
PHP原生函数一定好吗?
Dec 08 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
Laravel学习教程之本地化模块
Aug 18 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
python编写分类决策树的代码
2017/12/21 Python
Python中装饰器高级用法详解
2017/12/25 Python
浅谈python标准库--functools.partial
2019/03/13 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
九一八事变演讲稿范文
2014/09/14 职场文书
成绩报告单家长评语
2014/12/30 职场文书
暑假打工感想
2015/08/07 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
德生2P3收音机开箱评测
2022/04/30 无线电
python如何查找列表中元素的位置
2022/05/30 Python