18720358503 在线客服 人才招聘 返回顶部
企业动态 技术分享 行业动态

thinkphp避免反复递交表格的方法

2021-04-02分享 "> 对不起,没有下一图集了!">
引言: 在开发设计中,假如一个增加或改动的表格,在后台管理进行数据信息库实际操作后大家设置的并不是自动跳转到别的网页页面,還是回到本网页页面,这时候点一下访问器的倒退再递交或更新网页页面,会造成form表格反复递交,即这条纪录会被提升或改动2次。 造成表格反复递交的缘故是:第一次递交的表格会被缓存文件到运行内存中,直至网页页面下一次递交或网页页面关掉或转为别的

在开发设计中,假如一个增加或改动的表格,在后台管理进行数据信息库实际操作后大家设置的并不是自动跳转到别的网页页面,還是回到本网页页面,这时候点一下访问器的倒退再递交或更新网页页面,会造成form表格反复递交,即这条纪录会被提升或改动2次。

造成表格反复递交的缘故是:第一次递交的表格会被缓存文件到运行内存中,直至网页页面下一次递交或网页页面关掉或转为别的网页页面时才消退。在自启用回到时,运行内存中的数据信息仍然在,这时候网页页面中的分辨递交的编码仍然能够检验到递交的值,顾会造成反复递交的实际效果。

能够用于下好多个方法处理:

方式1:网页页面递交后转到另外一个网页页面而并不是本网页页面,举例说明,例如你的网页页面详细地址为

User/Index/login

则该网页页面的表格action详细地址能够为此外的解决详细地址,如

 form action= {:U( User/Index/check_login )}  method= post 

那样出错回到,或是客户点一下返回按键,還是会返回上一个详细地址,但是这类状况都不商业保险。也要配搭方式2,一起较为商业保险


方式2:递交表格后递交按键变灰/掩藏递交按键

这类方法通常为融合方式1来做的,根据JS来动态性监视客户的点一下姿势,动态性将按键特性置成disabeld,即是深灰色不能用。编码以下:

HTML:

 form action= {:U( User/Index/check_login )}  method= post 
  input type= text  name= username  value=  id= username  / 
  input type= password  name= userpwd  id= userpwd  / 
  input type= submit  name= login_btn  id= login_btn  value= 登录 / 
 /form 

JS:

$().ready(function(){
 $( #login_btn ).on( click ,function(){
 $(this).attr( disabled ,true);
 });
});

方式1+方式2 融合后,大部分90%之上的反复递交难题都能处理,可是大刘这儿還是说起下第三种方式,即在服务端一劳永逸的处理这一难题


方式3:应用掩藏任意TOKEN值的方式开展反复递交分辨

最先,在新项目的functions.php中加上以下方式

//建立TOKEN
function createToken() {
 $code = chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) .chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE));
 session( TOKEN , authcode($code));
//分辨TOKEN
function checkToken($token) {
 if ($token == session( TOKEN )) {
 session( TOKEN , NULL);
 return TRUE;
 } else {
 return FALSE;
 }
/* 数据加密TOKEN */
function authcode($str) {
 $key =  YOURKEY 
 $str = substr(md5($str), 8, 10);
 return md5($key . $str);
}

在表格网页页面form中填写下列HTML编码

HTML:

 input type= hidden  name= TOKEN  value= {:session( TOKEN )}  / 

在网页页面展现前启用creatToken()方式转化成token,在相对操纵器POST恳求中 应用 checkToken() 开展分辨是不是反复递交

if(IS_POST)
$post_token = I( post.TOKEN 
 if(!checkToken($post_token)){
 $this- error( 请不必反复递交网页页面 ,U( User/Index/login 
 }
}

大部分,这3个方式相互配合着应用,就可以处理ThinkPHP开发设计中表格反复递交难题,自然,有同学们说可使用ThinkPHP的令牌环体制,那样实际上就更简易了,TP会默认设置在表格中转化成一个掩藏域,那时候分辨这一掩藏域是不是存有及其和session中的值是不是想的就可以,基本原理和方式3是一样的。

筱航高新科技主营业务业务流程: 长春市企业网站建设 长春市网站建设 -长春市网站制作 -长春市网站建设 -长春市seo优化 -长春市网站SEO 长春市网络推广 长春市互联网营销推广 长春市百度关键词排行 -长春市手机微信微信小程序 -长春市手机微信商城系统 -长春市分销商商城系统

检索干万次比不上资询1次

主营业务新项目:企业网站建设,互联网营销推广,SEO提升,手机微信微信小程序开发设计,LOGO设计方案,商品包裝设计方案,虚似服务器,网站域名申请注册,网站安全性检验,手机微信商城系统等

马上资询
"> 对不起,没有下一图集了!">
在线咨询