laravel 当表单嵌入iframe时,Mews验证码验证不起作用

toiithl6  于 2023-03-13  发布在  其他
关注(0)|答案(3)|浏览(267)

我试着给一个表单添加验证码,一切正常。当我把表单添加到iFrame时,我开始收到验证码的验证错误。我使用的是Laravel 7.3mews/captcha 3.2
我得到错误是:
照明\确认\确认异常:当前页面位于/var/www/html/vendor/laravel/framework/src/Illuminate/validation/验证程序中。
HTML代码:

<span id="captchaspan"> {!! captcha_img('flat') !!}</span>
    <button type="button" class="btn btn-success" id="refresh"><i class="fa fa-refresh" ></i></button>

代码:

<script type="text/javascript">
    $('.btn-success').click(function(){
        $.ajax({
            type:'GET',
            url:'/refresh-captcha',
            datatype:'json',
            success: function(data){
                $(".captcha span").html(data.captcha);
            }
        });
    });
</script>

在控制器中:

try {
    request()->validate(['captcha' => 'required|captcha']);
}catch (\Exception $e){
    file_put_contents('log.log', ' captcha problem '.$e,8);
    return back()->with('error', 'Captcha Error');
}

刷新验证码方法

public function refreshCaptcha()
{
    return response()->json(['captcha'=> captcha_img('flat')]);
}

重要信息:只有当表单嵌入到iframe中时才会出现问题。

camsedfj

camsedfj1#

我不知道这是否可以帮助,但我有一个问题,这个库,经过几个小时的尝试找出问题并分析它,与库本身的问题,没有很好地测试,无论如何,我的问题是在config/mews php验证码文件有一个属性,被称为数学,我只是禁用它,和检查工作完美,现在,我希望这可以帮助任何人在未来:)如果验证码规则不工作试试这个:

'captcha' => 'required|' , new captchaRule()

沿着一个名为captchaRule()的自定义规则,该规则可以简单地通过以下测试:

return captcha_check($value);
x6492ojm

x6492ojm2#

为验证你应该使用captcha_check()函数在你的控制器.传递这提交captcha字符串到这函数并且得到一个布尔响应为验证.象这样:

if ( captcha_check($request->captcha) == false ) {
   return back()->with('invalid-captcha','incorrect captcha!')
}

相关问题