ThinkPHP技巧-POST过滤

下面文章介绍了如下几个问题的解决方法仅供参考:

问题:

1. 表单 post 重复提交?

2.限制 post 模拟提交?

3.数据 add() 自增id出现奇数偶数?


1.如何解决表单 post 重复提交?

a.页面提交后转到另一个页面而不是本页面,举个栗子,比如你的页面地址为

http://yourdomain.com/User/Index/login

则该页面的表单action地址可以为另外的处理地址,如

<form action="{:U('User/Index/check_login')}" method="post">

这样报错返回,或者用户点击回退按钮,还是会回到上一个地址

b.提交表单后提交按钮变灰/隐藏提交按钮

通过JS来动态监听用户的点击动作,动态将按钮属性置成disabeld,即为灰色不可用。代码如下:

<form action="{:U('User/Index/check_login')}"  method="post">
     <input type="text" name="uname" value="" id="uname" />
     <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);    
   });
});

c. 使用隐藏随机TOKEN值的方法进行重复提交判断

首先,在项目的functions.php中添加如下方法

//创建TOKEN
functioncreateToken(){ 
    $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);
        returnTRUE;  
     }else{
         returnFALSE;  
     }
}
/* 加密TOKEN */
functionauthcode($str){
    $key ="YOURKEY";   
    $str = substr(md5($str),8,10);
   returnmd5($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')); 
   }
}

基本上,就能解决ThinkPHP开发中表单重复提交问题,当然,有同学说可以使用ThinkPHP的令牌环机制,这样其实就更简单了,TP会默认在表单中生成一个隐藏域,到时候判断这个隐藏域是否存在以及和session中的值是否想的即可,原理和方法3是一样的。

2.如何限制表单post模拟提交?

//如果是ajax 的post提交在控制器下方法内加入代码:

if(IS_AJAX&&IS_POST){
  // 同时需要判定post是否是页面定义的post参数,非页面定义的参数,提示请求参数溢出
 ......
}

//若果只是post提交在控制器下方法加入代码:
if(IS_POST){
    // 同时需要判定post是否是页面定义的post参数,非页面定义的参数,提示请求参数溢出
   ......
}

3.thinkphp调用add()方法时候自增id出现奇数偶数如何处理?

#首先,查看mysql当前数据库自增长的步长?
        SHOW VARIABLES LIKE 'auto_inc%';
#然后,查看结果 auto_increment_increment 的值是否等于 1 ,如果是1代表以1递增,如果是2代表以2递增......
#最后设定每次增长步长
      SET @auto_increment_increment=1;

#若想在表中的主键id以奇数出现,则设置为 SET @auto_increment_increment=奇数; 例如=3
#若想在表中的主键id以奇数出现,则设置为 SET @auto_increment_increment=偶数; 例如=2
#若想在表中的主键id以顺序增长1出现,则设置为 SET @auto_increment_increment=1;      










最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容