KirKMS Опубликовано 15 февраля, 2021 Жалоба Поделиться Опубликовано 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Edward Nemirovskiy Опубликовано 15 февраля, 2021 Жалоба Поделиться Опубликовано 15 февраля, 2021 (изменено) # 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 Можешь ребятам сделать инструкцию Изменено 15 февраля, 2021 пользователем Edward Nemirovskiy Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения