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 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
php 定义404页面的实现代码
Nov 19 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
php计算函数执行时间的方法
Mar 20 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
Paypal实现循环扣款(订阅)功能
Mar 23 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 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
source.php查看源文件
2006/12/09 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
使用python实现学生信息管理系统
2021/02/25 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
培训楼经理岗位责任制
2014/02/10 职场文书
亲子活动总结
2014/04/26 职场文书
员工家属慰问信
2015/03/24 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python