解决form表单重复提交以及多页面提交问题

4 篇文章 0 订阅
2 篇文章 0 订阅

开发过程,遇到post重复提交问题,导致数据写入混乱。然后采用了一种方式:

(框架:TP)

在请求之前,加上表单隐藏域:__hash__不过体验度很差

在后端,

		//防止表单重复提交
	    if(!check_token($_POST)){
	        $this->ajaxReturn(null,"请不要重复提交",0);
	    }

,这样也算解决了重复提交的问题,不过遇到同时打开多个浏览器时,hash是不同的,还是可以进行重复提交,想了想,试着用memcache锁机制写了一段简短代码,临时解决了这样的问题:

	/**
	 * @uses 采用memcache控制重复提交
	 * @author jhl
	 */
	public function _AuthenticateRealNameMemcacheControl($user_id){
	    
	    $keyname = 'AuthenticateRealNamePostControl_'.$user_id;
	    $lockkeyname = $keyname.'_lock';
	    $CacheMemcache=new CacheMemcache();
	    $lockkeyvalue = $CacheMemcache->get($lockkeyname);
	    if($lockkeyvalue == 'lock'){
	        $CacheMemcache->set($lockkeyname,'unlock',1);
	        $this->ajaxReturn(null,"请不要重复提交",0);
	    }elseif($lockkeyvalue == 'unlock'){
	         $CacheMemcache->set($lockkeyname,'lock',1);
	    }else{
	        $CacheMemcache->set($lockkeyname,'lock',1);
	    }
	}


在进入方法引入:

		    //防止多个页面同时提交
	    $this->_AuthenticateRealNameMemcacheControl(C('userId'));

虽然通过了测试人员的测试,不过细想下,其实还是很难满足要求的,暂且这样吧,睡觉






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值