geetest.blade.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <script src="https://cdnjs.loli.net/ajax/libs/jquery/2.1.0/jquery.min.js" type="text/javascript"></script>
  2. <script src="/assets/geetest/gt.js" type="text/javascript"></script>
  3. <div id="{{ $captchaid }}"></div>
  4. <p id="wait-{{ $captchaid }}" class="show">{{trans('auth.captcha_loading')}}</p>
  5. @define use Illuminate\Support\Facades\Config
  6. <script>
  7. var geetest = function (url) {
  8. var handlerEmbed = function (captchaObj) {
  9. $("#{{ $captchaid }}").closest('form').submit(function (e) {
  10. // captchaObj.verify();
  11. var validate = captchaObj.getValidate();
  12. if (!validate) {
  13. Msg(false, "{{trans('auth.captcha_required')}}", 'error');
  14. e.preventDefault();
  15. }
  16. });
  17. captchaObj.appendTo("#{{ $captchaid }}");
  18. captchaObj.onReady(function () {
  19. $("#wait-{{ $captchaid }}")[0].className = "hide";
  20. });
  21. if ('{{ $product }}' == 'popup') {
  22. captchaObj.bindOn($('#{{ $captchaid }}').closest('form').find(':submit'));
  23. captchaObj.appendTo("#{{ $captchaid }}");
  24. }
  25. };
  26. // 前端第一次验证
  27. $.ajax({
  28. url: url + "?t=" + (new Date()).getTime(),
  29. type: "get",
  30. dataType: "json",
  31. success: function (data) {
  32. initGeetest({
  33. gt: data.gt,
  34. challenge: data.challenge,
  35. product: "{{ $product?$product:Config::get('geetest.product', 'float') }}",
  36. offline: !data.success, // 表示用户后台检测极验服务器是否宕机
  37. new_captcha: data.new_captcha, // 用于宕机时表示是新验证码的宕机
  38. lang: '{{session::get('locale', 'zh-cn')}}', // 免费版本仅支持中文
  39. http: '{{ Config::get('geetest.protocol', 'http') }}' + '://',
  40. width: '100%'
  41. }, handlerEmbed);
  42. }
  43. });
  44. };
  45. function Msg(clear, msg, type) {
  46. if (!clear) $('.login-form .alert, .register-form .alert').remove();
  47. var typeClass = 'alert-danger',
  48. clear = clear ? clear : false,
  49. $elem = $('.login-form, .register-form');
  50. type === 'error' ? typeClass = 'alert-danger' : typeClass = 'alert-success';
  51. var tpl = '<div class="alert ' + typeClass + '">' +
  52. '<button class="close" data-close="alert"></button>' +
  53. '<span> ' + msg + ' </span></div>';
  54. if (!clear) {
  55. $elem.prepend(tpl);
  56. } else {
  57. $('.login-form .alert, .register-form .alert').remove();
  58. }
  59. }
  60. (function () {
  61. geetest('{{ $url?$url:Config::get('geetest.url', 'geetest') }}');
  62. })();
  63. </script>
  64. <style type="text/css">
  65. .hide {
  66. display: none;
  67. }
  68. </style>