Posted 5 февраля, 20195 yr comment_155044 Всем добрый день. Вроде, эта тема тут поднималась, но в ней в итоге ничего не ответили. В общем, после перехода на версию ips 4.3.6 с другой CMS, я столкнулся с такой проблемой, как blowfish3. Серьезно, я никогда не натыкался на этот метод и не понимаю как он работает. Но я все же попытался что-то наколякать. Вроде работоспособный метод, но все равно не канает: <?php @error_reporting(E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE); @ini_set('error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE); @ini_set('display_errors', true); $config = [ 'db' => [ 'host' => 'localhost', /* Хост БД */ 'user' => 'forum_u1', /* Юзер БД */ 'name' => 'forum', /* Назваение БД */ 'pass' => '' /* Пароль от БД */ ], 'users' => [ //!!!!!НЕ МЕНЯЙ!!!!! 'table' => 'core_members', /* Таблица с юзерами */ 'name' => 'name', /* Колонка с никами юзеров */ 'mail' => 'email', /* Колонка с почтой юзеров */ 'pass' => 'members_pass_hash', /* Колонка с паролями пользователей */ //!!!!!НЕ МЕНЯЙ!!!!! ], 'access_key' => 'code', /* Секретный ключ для авторизации */ 'auth_ip' => 'localhost' /* IP-адресс сервера, который будет обращаться к скрипту */ ]; if ($_SERVER['REMOTE_ADDR'] != $config['auth_ip']) { die('К сожалению у вас нету доступа к данному содержимому!'); } if (isset($_GET['login']) && isset($_GET['password']) && $_GET['access_key'] == $config['access_key']) { function checkPass($getPass, $getHashPass) { if (password_verify($getPass, $getHashPass)) { return true; } else { return false; } } $db = new mysqli($config['db']['host'], $config['db']['user'], $config['db']['pass'], $config['db']['name']); if ($db->connect_errno) { die($db->connect_error); } else { $data = [ 'user' => $db->real_escape_string($_GET['login']), 'pass' => $db->real_escape_string($_GET['password']), ]; $getUser = $db->query("SELECT * FROM `{$config['users']['table']}` WHERE `{$config['users']['name']}`='{$data['user']}' OR `{$config['users']['name']}`='{$data['user']}' LIMIT 1"); if ($getUser->num_rows) { $getUser = $getUser->fetch_assoc(); if (checkPass($data['pass'], $getUser[$config['users']['pass']])) { die("OK:{$getUser['name']}"); } else { die('Incorrect login or password'); } } else { die('Incorrect login or password'); } } $db->close(); } else { die ('Empty login or password'); } ?> Соль в том, что при запросе forum.example.com/auth.php?username=%login%&password=%password%&access_key=code, должна выводиться маска OK:(?<username>.+) (ну думаю не для кого ни секрет, что это за маска такая). Прошу вас указать на мои ошибки и желательно показать метод решения этой задачи.
6 февраля, 20195 yr comment_155046 Вы передаете в запросе username=%login%, а проверяете $_GET['login'], естественно, ничего не работает. Поменяйте в двух местах на $_GET['username'] и всё полетит. Или, что проще, передавайте login=%login%
6 февраля, 20195 yr Author comment_155051 2 часа назад, Desti сказал: Вы передаете в запросе username=%login%, а проверяете $_GET['login'], естественно, ничего не работает. Поменяйте в двух местах на $_GET['username'] и всё полетит. Или, что проще, передавайте login=%login% И правда все заработало. Спасибо ВаМ большое. P.S.: Только все равно пишет Incorrect login or password. Может, где-то в скрипте самом ошибки?
6 февраля, 20195 yr Author comment_155053 3 часа назад, Desti сказал: Вы передаете в запросе username=%login%, а проверяете $_GET['login'], естественно, ничего не работает. Поменяйте в двух местах на $_GET['username'] и всё полетит. Или, что проще, передавайте login=%login% И правда все заработало. Спасибо ВаМ большое. P.S.: Только все равно пишет Incorrect login or password. Может, где-то в скрипте самом ошибки? UPD: Ошибку нашел и исправил. Еще раз спасибо.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.