tp5令牌数据无效 解决方法

按照官方的写法,我怎么都是提示令牌数据无效

令牌数据无效:

图片.png

最后各种资料查,最终解决办法如下:

//html
<form action="" method="post">
    <a href="">Version:{$Think.version}</a><br>
    <input type="text" name="account" value="123456">
    <input type="text" name="password" value="123456">
    <input type="hidden" name="__token__" value="{$Request.token}" />
    <input type="submit" value="post">
</form>


//controller
use think\Controller;

class Token extends Controller
{
    public function index()
    {
        if( $this->request->isPost() ) {
            $data = [
                'account'  => $this->request->param('account' , null) ,
                'password' => $this->request->param('password' , null) ,
                '__token__'=>$this->request->param('__token__',null)
            ];
//            dump($data);die;
            $validate = new \app\test\validate\Token;
            if( !$validate->check($data) ) {
                echo $validate->getError();
            }
            else {
                echo "ok";
            }
        }
        return $this->fetch();
    }
}

//validate
namespace app\test\validate;

use think\Validate;

class Token extends Validate
{
    protected $rule = [
        'account'  => 'require|length:6:7|token' ,
        'password' => 'require|max:6' ,
    ];
}

成功:

图片.png

另一个控制器验证例子 tp5.0.10

<form action="{:url('save')}" method="post">
    {:token()}
    username:<input type="text" name="username"><br>
    password:<input type="text" name="password"><br>
    password_confirmation:<input type="text" name="repassword"><br>
    <input type="submit">
</form>
public function save(Request $request)
    {
//                halt($request->param());
        $result = $this->validate(
            [
                'username'   => $request->param('username') ,
                'password'   => $request->param('password') ,
                'repassword' => $request->param('repassword') ,
                '__token__'=>$request->param('__token__') //必须
            ] ,
            [
                'username'   => 'require|min:3|unique:user|token' ,//验证user模型唯一 //必须
                'password'   => 'require|min:3' ,
                'repassword' => 'require|min:3|confirm:password'
            ],
            [
                'username.token'=>'请勿重复提交数据' //令牌不正确的返回信息,默认是“令牌数据无效”
            ]
        );
        if( true !== $result ) {
            halt($result);
        }
        $user = \app\common\model\User::create([
            'username' => $request->param('username') ,
            'password' => MD5($request->param('password'))
        ]);
        if( !$user ) {
            halt($user);
        }
        else {
            /*session('uid',$user->id);
            dump('自动登录');
            return redirect('index/user/index');*/
        }
    }

更新数据使用令牌

public function update(Request $request , $id)
    {
        //单独更新
        $info = \app\common\model\WashCardCate::get(['id' => $id]);
        $data = input('post.');
        $info->title = $data['title'];
        $info->note = $data['note'];
        $info->start_time = strtotime($data['start_time']);
        $info->end_time = strtotime($data['end_time']);
        $info->count = $data['count'];
        $info->car_id = implode(',' , $data['car_id']);
        $info->wash_id = implode(',' , $data['wash_id']);
        $info->__token__ = input('__token__');//这里
        //        dump($info);die;
        $validate = new \app\common\validate\WashCardCate();
        $result = $validate->check($info);
        if( false === $result ) {
            return $this->error($validate->getError());
        }
        $info->save();
        return $this->success('ok' , url('index'));
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值