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

开发过程,遇到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'));

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






你可能感兴趣的:(php,锁,memcache,重复请求)