KirKMS Posted February 15, 2021 Report Share Posted February 15, 2021 Всем привет. Ловите от меня свежий модуль для Vii-Engine. Я не понимаю почему ещё не кто его не написал и не выложил. При авторизации пользователя просят ввести проверочный код. При желание можно подключить reCAPTCHA - Google. Вот вам скрин. Этап установки под спойлером. Модуль написан на основе VII ENGINE LICENSE (NULLED) 2.1 Спойлер Зайти в reg.js Найти там //RESTORE var restore = { Вставить выше //Модуль CAPTCHA при авторизации By KirKMS var login = { send: function(){ var log_email = $('#log_email').val(); var log_password = $('#log_password').val(); var rndval = new Date().getTime(); if(log_email != 0 && isValidEmailAddress(log_email)){ if(log_password != 0){ Box.Show('sec_code', 280, 'Введите код с картинки:', '<div style="padding:20px;text-align:center"><div class="cursor_pointer" onClick="updateCode(); return false"><div id="sec_code"><img src="/antibot/antibot.php?rndval=' + rndval + '" alt="" title="Показать другой код" width="120" height="50" /></div></div><div id="code_loading"><input type="text" id="val_sec_code" class="inpst" maxlength="6" style="margin-top:10px;width:110px" /></div></div>', lang_box_canсel, 'Отправить', 'checkCodeLogin(); return false;'); } else { setErrorInputMsg('log_password'); $('#err').show().html(lang_nosymbol); } } else { setErrorInputMsg('log_email'); $('#err').show().html(lang_nosymbol); } }, finish: function(sec_code){ var email = $('#log_email').val(); var password = $('#log_password').val(); var log_in = ''; $.post('/index.php', { email: email, password: password, sec_code: sec_code, log_in: log_in }, function(d){ var exp = d.split('|'); if(exp[0] == 'ok'){ location.reload(); } else if(exp[0] == 'err_mail'){ Box.Info('boxerr', 'Ошибка', 'Проверьте правильность вводимых данных', 300); Box.Close('sec_code'); } else { Box.Info('boxerr', 'Ошибка', 'Проверьте правильность вводимых данных', 300); Box.Close('sec_code'); } }); } } //Проверка каптчи при авторизации function checkCodeLogin(){ var val_sec_code = $("#val_sec_code").val(); $('#code_loading').html('<img src="'+template_dir+'/images/loading_mini.gif" style="margin-top:21px" />'); $.get('/antibot/sec_code.php?user_code='+val_sec_code, function(data){ if(data == 'ok'){ login.finish(val_sec_code); } else { updateCode(); $('#code_loading').html('<input type="text" id="val_sec_code" class="inpst" maxlength="6" style="margin-top:10px;width:110px" />'); $('#val_sec_code').val(''); $('#val_sec_code').focus(); } }); } Далее зайти в main.tpl Найти там <form method="POST" action=""> Удалить Ниже найти </form> Удалить Далее найти <button name="log_in" id="login_but" style="width:138px">Войти Заменить на <button onClick="login.send(); return false" style="width:138px">Войти Далее зайти в файл login.php Найти там if (isset($_POST['log_in']) AND !$logged) { Заменить всё от скобки до скобки на //Если данные поступили через пост и пользователь не авторизован //Модуль CAPTCHA при авторизации By KirKMS if (isset($_POST['log_in']) AND !$logged) { NoAjaxQuery(); //Код безопасности $session_sec_code = $_SESSION['sec_code']; $sec_code = $_POST['sec_code']; //Приготавливаем данные $email = textFilter(strip_tags($_POST['email'])); $password = md5(md5(GetVar($_POST['password']))); //Если код введные юзером совпадает, то пропускаем, иначе выводим ошибку if ($sec_code == $session_sec_code) { //Проверяем правильность e-mail if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo 'err_mail|'; } else { //Считаем кол-во символов в пароле и email if (isset($email) AND !empty($email)) { $check_user = $db->super_query("SELECT user_id FROM `" . PREFIX . "_users` WHERE user_email = '" . $email . "' AND user_password = '" . $password . "'"); //Если есть юзер то пропускаем if ($check_user) { //Hash ID $hid = $password . md5(md5($_IP)); //Обновляем хэш входа $db->query("UPDATE `" . PREFIX . "_users` SET user_hid = '" . $hid . "' WHERE user_id = '" . $check_user['user_id'] . "'"); //Удаляем все рание события $db->query("DELETE FROM `" . PREFIX . "_updates` WHERE for_user_id = '{$check_user['user_id']}'"); //Устанавливаем в сессию ИД юзера $_SESSION['user_id'] = intval($check_user['user_id']); //Записываем COOKIE set_cookie("user_id", intval($check_user['user_id']), 365); set_cookie("password", $password, 365); set_cookie("hid", $hid, 365); //Вставляем лог в бд $db->query("UPDATE `" . PREFIX . "_log` SET browser = '" . $_BROWSER . "', ip = '" . $_IP . "' WHERE uid = '" . $check_user['user_id'] . "'"); //if ($config['temp'] != 'mobile') header('Location: /u' . $check_user['user_id']); //header('Location: /'); echo 'ok' ; } else echo 'no_val'; } else echo 'err_mail|'; } } die(); } Вроде всё. Наверное не чего не забыл. Не откажусь от плюса в репу. Если есть проблемы, то пишите. Всем спасибо за внимание. С уважением KirKMS. 4 Quote Link to comment Share on other sites More sharing options...
Edward Nemirovskiy Posted February 15, 2021 Report Share Posted February 15, 2021 (edited) # main.tpl <script src="https://www.google.com/recaptcha/api.js" async defer></script> <div class="g-recaptcha" data-sitekey="ключ доступа"></div> # reg.js в reg.finish() где $.post sec_code: grecaptcha.getResponse() # register.php и на беке $responseKeys = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.urlencode('6LdqitsZAAAAAPVQdDP4OywRl2j0BXMFKxfuV0bV').'&response='.urlencode($_POST['sec_code'])), true); if($responseKeys["success"]){ код реги } @KirKMS Можешь ребятам сделать инструкцию Edited February 15, 2021 by Edward Nemirovskiy Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.