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中GET变量的使用
Oct 09 PHP
用PHP和ACCESS写聊天室(九)
Oct 09 PHP
谈谈新手如何学习PHP
Dec 23 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
PHP面试题之文件目录操作
Oct 15 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
Laravel 连接(Join)示例
Oct 16 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
yii操作session实例简介
2014/07/31 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python中的默认参数实例分析
2018/01/29 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
装饰活动策划方案
2014/02/11 职场文书
综合办公室岗位职责
2015/04/11 职场文书
薪资证明范本
2015/06/19 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书