使用php怎么防止页面重复提交?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
php有什么用
php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使php经得久不衰。
1,提交按钮置禁用
,,,,,当用户提交后,立即把按钮置为不可用状态。这种用js来实现。
,,,,,,,,提交前
代码如下:
,,,,,,,$ (“# submit") .attr(& # 39;残疾人# 39;& # 39;真正的# 39;);
,,,,,,,,$ (“# submit") .val(“正在提交,请稍等”),
,
,,,,,,....................................................................................
,,,执行后,把按钮置为原来状态
代码如下:
,,,,,美元(& # 39;# & # 39;提交).removeAttr(& # 39;残疾人# 39;);
,,,,,$(“#提交“).val(“确定提交“);
2,过期时间法
,,,思路:当用户提交按钮后生成一个令牌(每次业务提交令牌为唯一值)存入会话,并设置过期时间。当用户再此提交时,检测令牌是否一致且是否过期,若一致且没有过期,则认为提交了二次。当程序执行出错的时候,则需要清除存入会话的值。见下面程序
代码如下:
函数checkRepeatSubmit ($ uniqueid=& # 39; & # 39;,到期=30美元){
,,,,,,,(uniqueid=空美元uniqueid) ?Yii:应用()→→用户id。Yii:应用()→→用户名称。Yii::应用()→用户→mihome: uniqueid美元;
,,,,,,,令牌=美元md5 (“wms_check_repeat"。美元uniqueid);
,,,,,,,时间=()美元;
,,,,,,,如果(收取($ _SESSION[& # 39;标记# 39;]),,!空($ _SESSION[& # 39;标记# 39;]),,$ _SESSION[& # 39;标记# 39;]==美元令牌,,(时间- _SESSION美元[& # 39;expire_time& # 39;] & lt;到期美元)){
,,,,,,,,,,,返回false;
,,,,,,,其他}{
,,,,,,,,,,,$ _SESSION[& # 39;标记# 39;]=美元令牌;
,,,,,,,,,,,$ _SESSION [& # 39; expire_time& # 39;]=$;
,,,,,,,,,,,//会话写入的时候会等待整个页面加载完成,用此函数可以立即写入
,,,,,,,,,,,session_write_close ();
,,,,,,,,,,,返回true;
,,,,,,,}
,,,}
,//删除存入的值
,,函数cancelRepeatSubmit () {
,,,,,,,设置($ _SESSION[& # 39;标记# 39;]);
,,,,,,,设置($ _SESSION [& # 39; expire_time& # 39;]);
,,,}
3,令牌销毁法
思路:当页面进行加装的时候生成令牌,存在会话中,并写在表单里。表单提交的时候随表单提交给服务端,服务端通过会话存入的令牌与令牌进行比较,若相等,则销毁seesion中存入的令牌,当页面遭到二次提交的时候,由于存会话中入的令牌不存在而报的错。下面是代码
代码如下:
,
/* *,,,,*第二种方案
,,,,* 1,产生牌,并存在会话中
,,,,* 2,随页面生成
,,,,* 3、提交页面与会话进行比对,成功后对会话进行销毁
,,,,* 4、第二次提交则不存在这个值而报错
,,,,* @param类型美元uniqueid
,,,,* @return类型
,,,,*/
,,,函数createToken (uniqueid美元){
,,,,,,,(uniqueid=空美元uniqueid) ?Yii:应用()→→用户id。Yii:应用()→→用户名称。Yii::应用()→用户→mihome: uniqueid美元;
,,,,,,,令牌=美元md5 (“wms_check2_repeat"。美元uniqueid);
,,,,,,,$ _SESSION [& # 39; form_token& # 39;]=美元令牌;
,,,,,,session_write_close ();
,,,,,,,返回$令牌;
,,,}
,,,函数checkToken(美元令牌){
,,,,,,,如果(!收取($ _SESSION [& # 39; form_token& # 39;]) | |空($ _SESSION [& # 39; form_token& # 39;]) | | $ _SESSION [& # 39; form_token& # 39;] !=$令牌){
,,,,,,,,,,,返回false;
,,,,,,,其他}{
,,,,,,,,,,,设置($ _SESSION [& # 39; form_token& # 39;]);
,,,,,,,,,,,返回true;
,,,,,,,}
,,,null