关于数据提交的PHP处理几点思路

之前说在处理POST和GET提交的几个步骤不够明确,经过这么多天的琢磨又整理了下。重新发表下自己的见解!希望这些可以帮助PHPER们优化自己的程序,完善自己的后台处理机制。

第一点,表单控件设计要讲求整体。达到这一点要使用数组来完善,关于这个我写了个函数叫initFiled,可以产生各种的表单控件,如文本框,多选框之类的,目的是生成一种数组形式的name,我的形式是这样的name=filed[sign][name].并且在这个时候要会使用其他的方案来完成表单元素的对比,这里称为对比元素,全部使用HIDDEN,在第二中详细介绍。这样的设计在提交的时候只需要获取$_POST[‘filed]即可获取全部,sign是指标记,根据提交数据对应的数据表不同而分类设计,name是当前元素的名字,如果是多选框还可以使用name=filed[sign][name][]这样去设计。

第二点,要结合对比元素传递。在NAME数组的前提下,我们设计一个对比元素成为filed_prev,比如<input type=hidden name=filed_prev[sign][name]>,将对比元素写在实际元素的旁边。如果有使用到对比元素,在PHP处理时候时候$_POST[‘filed_prev’]去接受这个对比元素,然后将对比元素和实际元素进行对比。比如在大范围数据的更新时,如果通过对比发现提交的数据没有改变,则不需要执行MYSQL的操作,会给程序带来好处。如果有改变,则只提交改变那一部分数据即可。这是我的设计思路。

第三点,表单设计时加入TOKEN。TOKEN是令牌的意思,我有篇文章提到了TOKEN的设计。基本思想就是,生成一个唯一的TOKEN字串,然后提交到PHP时检验TOKEN是否合法,不合法则拒绝或者发出提示信息。TOKEN的基本应用有两点好处:1可以防止重复提交,2可以放置外来地址的提交或者非指定方式(如POST)的提交。至于其他高级的应用比如判断当前动作等等在此不做讲解。简化下思路:表单放置TOKEN的HIDDEN控件,PHP处理时获取TOKEN并执行相应的动作。

第四点,提交表单时进行JS验证。对一些基本的必填的内容进行基本的验证即可,一般考虑到用户体验不要使用过多的验证影响用户的心情,验证基本的诸如,是否填写,邮件地址,用户名是否注册,密码是否合法等,

第五点,过滤提交内容和设置条件。由一下几种方案完整性验证,合法性验证,关键词生成、非法词过滤、编码转换、入库非法字符转换。当然根据需要还有不同的方案,需要自己去设置了。在这里推荐使用验证函数或者验证类去完成,很多数据的验证都是雷同或者根本就是相同的,如果每个都要去写代码就太浪费了,写一个通用的类是最好不过了,推荐使用对象去验证合法性。并且根据条件,比如当前的操作人,操作时间或者其他条件生成相应的SQL语句。关于SQL语句的设计请关注如何防范SQL注入。

Comments