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 curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
php实现随机显示图片方法汇总
May 21 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
mongodb和php的用法详解
Mar 25 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
Laravel-添加后台模板AdminLte的实现方法
Oct 08 PHP
Laravel手动返回错误码示例
Oct 22 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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中数组的分组排序实例
2014/06/01 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
php多线程并发实现方法
2016/09/30 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
js变量以及其作用域详解
2020/07/18 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
Python的装饰器用法学习笔记
2016/06/24 Python
Python字符串处理实例详解
2017/05/18 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
python梯度下降法的简单示例
2018/08/31 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
别名指示符是什么
2012/10/08 面试题
会计电算化专业毕业生推荐信
2013/12/24 职场文书
2014年小学植树节活动方案
2014/03/02 职场文书
如何写好自荐信
2014/04/07 职场文书
毕业班工作总结
2015/08/10 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python