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 相关文章推荐
桌面中心(一)创建数据库
Oct 09 PHP
php下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
php include类文件超时问题处理
Feb 06 PHP
php强制用户转向www域名的方法
Jun 19 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
PHP实现生成数据字典功能示例
May 24 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
详解PHP Swoole与TCP三次握手
May 27 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中的Memcache详解
2014/04/05 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
php集成开发环境详解
2019/09/24 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
js实现微博发布小功能
2017/01/12 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python之Character string(实例讲解)
2017/09/25 Python
Django REST framework视图的用法
2019/01/16 Python
django中media媒体路径设置的步骤
2019/11/15 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
一套.net面试题及答案
2016/11/02 面试题
六年级数学教学反思
2014/02/03 职场文书
个人函授自我鉴定
2014/03/25 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
开工仪式策划方案
2014/05/23 职场文书
教师自荐信范文
2015/03/06 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python