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面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
PHP字符串 ==比较运算符的副作用
Oct 21 PHP
php 上传功能实例代码
Apr 13 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP的password_hash()使用实例
Mar 17 PHP
PHP中的替代语法介绍
Jan 09 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
php析构函数的简单使用说明
Aug 24 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
php桥接模式应用案例分析
Oct 23 PHP
tp5.1框架数据库子查询操作实例分析
May 26 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
页面乱码问题的根源及其分析
2013/08/09 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
理解Javascript_05_原型继承原理
2010/10/13 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
详解rem 适配布局
2018/10/31 HTML / CSS
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
什么是.net的Remoting技术
2016/07/08 面试题
安全员岗位职责
2013/11/11 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python