1.前台表单2. 后台验证及添加动作 
 function add(){
    $user=new Model('user');
    if($vo=$user->create()){
           $user->password=md5($user->password);
                 if($user->add()){
             $this->success('添加成功');
                  }else{
             $this->error('添加失败');
       }
          }else{
    dump($vo);
       $this->error($user->getError());
    }
          }
问题:     首先我将前台的页面,静态化保存。
           然后多次刷新提交到服务器。
          本该有create()方法会自动验证,阻止掉,但是为啥每次都能成功插入数据库。
           create()方法失效了吗?
          问题出在哪了?

解决方案 »

  1.   

    $user=new Model('user');
    改成
    $user=D('user');
      

  2.   

    把一下内容写到你的配置文件中,不要理会默认的,你会发现自动验证可用了,真实的验证过,遇到的也是这种问题
    拿来与大家分享解决办吧@Quicknine'TOKEN_ON'=>true,  // 是否开启令牌验证
    'TOKEN_NAME'=>'__hash__',    // 令牌验证的表单隐藏字段名称
    'TOKEN_TYPE'=>'md5',  //令牌哈希验证规则 默认为MD5
    'TOKEN_RESET'=>true,  //令牌验证出错后是否重置令牌 默认为true
      

  3.   

    还有,在 $this->error('添加失败'); 时,必须重新刷新页面,要重新生成令牌
      

  4.   

    问题:     首先我将前台的页面,静态化保存。
               然后多次刷新提交到服务器。
              本该有create()方法会自动验证,阻止掉,但是为啥每次都能成功插入数据库。
               create()方法失效了吗?
              问题出在哪了?
    =====================================
    对不起 ,竟然看漏了 【静态化保存】
    生成静态文件?还是伪静态
    如果是直接生成静态文件,那么你还得AJAX获取令牌
    如果是伪静态,系统会自动生成令牌的,当返回值是添加失败时,你必须刷新页面,如果不刷新,那你必须调用重新生成令牌这个函数,  THINKPHP 重新生成令牌函数你要改动才可以外部调用~!