1. 程式人生 > >解決form表單重複提交以及多頁面提交問題

解決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'));

雖然通過了測試人員的測試,不過細想下,其實還是很難滿足要求的,暫且這樣吧,睡覺