关于TP5的表单token使用注意点之一二

 首先,表单里面直接的这个{$Request.token},是token的value值,每一次刷新页面,会有一个新的token生产

<form method="post" action="{:url('Login/do_login')}">
                <h4 class="no-margins">登录:</h4>
                <p class="m-t-md">登录到后台主页</p>
                <input name="username"  type="text" class="form-control uname" placeholder="用户名" />
                <input name="passwords" type="password" class="form-control pword m-b" placeholder="密码" />
                <input type="hidden" name="__token__" value="{$Request.token}">
                <a href="javascript:;">忘记密码了?</a>
                <button onclick="" class="btn btn-success btn-block">登录</button>
            </form>

第二,我们可以获取表单的token值,和session中的token,进行对比是否一样

$token=request()->param("__token__");//这是表单提交获取的token
var_dump(request()->session());//直接打印session中的token

第三:validate验证器中的token名称一定要为__token__才行,如果你这里写错了,就会验证失败

protected $rule=[
      'admin_name'=>'require|length:5,20',
      'admin_pwds'=>'require|length:6,15',
      '__token__'=>'require|token', //这里__token__不能去改.
    ];

我们打印传参过来的值,以及session获取的token,还有验证后的结果,验证成功为true

如果对比失败,请检查你的data中的token名称是否为__token__,以及验证器是否正确写对了,还有就是你的表单是否重复提交了,重复提交失败是因为你的session中的token变了而你获取的token还是上一次的token,要去表单页面重新刷新一次再进行提交.

猜你喜欢

转载自my.oschina.net/laobia/blog/1632724