$pass = hash($username, $password); переделал функцию пароль начал приходить на почту но по прежнему не заходит на сайт ((( Может ли быть, что при регистрации есть команда которая разрешает сохранять в БД пароль? И сохраняет его в кеш каким-либо образом? И при всем этом сохраняя в кеш дополнительный ключ или сертификат пользователя? Или же, может ли быть такое, что БД закрыта от внесения каких-либо данных из вне скрипта регистрации? --- Добавлено --- Ну я не вижу ничего сверхъестественного в этом скрипте регистрации. PHP: <?php if(isset($_GET['success']) && empty($_GET['success'])) { $confirm = ""; if($settings['email_confirmation'] == '1') $confrim = ' Please check your email account for activation!'; echo output_success('Вы были успешно зарегестрированы!' . $confirm); } else { if(empty($_POST) == false && empty($errors) == true){ if($settings['email_confirmation'] == '1') $active = '0'; else $active = '1'; $register_data = array( 'username' => $_POST['username'], 'password' => $_POST['password'], 'email' => $_POST['email'], 'name' => $_POST['name'], 'ip' => $_SERVER['REMOTE_ADDR'], 'date' => date('Y.m.d'), 'email_code' => md5($_POST['username'] + microtime()), 'active' => $active ); register_user($register_data); header('Location: register.php?success'); exit(); } elseif(empty($errors) == false) { echo output_errors($errors); } ?> --- Добавлено --- В добавок просто снёс пароль
@Zum, скрипт как-нибудь отлаживаешь? Делай вывод всего, и тогда ты увидишь где проблема. А вот переделывать функцию c_hash не нужно. Включи вывод ошибок, если не включен PHP: error_reporting(E_ALL); ini_set("display_errors", 1); --- Добавлено --- У тебя в коде используется расширение mysql которое уже удалено в новых версиях php. Надо узнать какая версия php.
Написал в файле .htacces строчку php_flag disolay_errors 1 . После чего зайдя на страницу восстановления пароля, при попытки отправить новый пароль на странице появилась ошибка Fatal error: Call to undefined function c_hash() in /home/s/shapiroj/gidmc.ru/public_html/lostpass.php on line 106 . Что в принципе означает что функция c_hash() не верно работает. На сколько я узнал php скрипты у меня на сайте работают на версии не выше 5.6 . Попробовав поставить тот же сайт на версию скриптов php 7.1 сайт безуспешно отказался работать.
Плохо перевел. Если не выше, зачем версию поднимаешь? Я тебе сказал, что у тебя в коде используются функции которые уже выпилены в новых версиях. А по существу, в ошибке говорится, что функция такая не определена. Это значит, что функция на самом не определена, или же не подключен файл где эта функция определена. В данном случае это второй пункт. Инклуд сделай в начале скрипта восстановления пароля. include 'core/init.php'; Я пытаюсь тебе помочь, а ты читаешь через строчку. --- Добавлено --- И восстанови функцию c_hash если вносил какие либо изменения.
PHP: $settings_dir = "../settings"; include 'core/init.php'; $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $email = mysql_real_escape_string($_POST['email']); // проверяем, если юзер в таблице с таким же логином $query = "SELECT `user_id` FROM `users` WHERE `username`='{$username}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql)==1) { //если есть //генерируем пороль $simvols = array ("0","1","2","3","4","5","6","7","8","9", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); for ($key = 0; $key < 6; $key++) { shuffle ($simvols); $string = $string.$simvols[1]; } //перегоняем в md5 хэш $pass = c_hash($username, $password); Изменил путь к скрипту через который подключается сайт к бд и тд PHP: $settings_dir = "../settings"; include 'core/init.php . Пароль приходит только теперь два пароля за место одного и я заметил такую вещь в скрипте users.php [php]function c_hash($username, $password){ $salt = "fc160cd93ccd8b3bdb8e38c1dbe76f2a7c0371c46741b5a98d0b6074b192b9983195148abf077a5b802d803ec16217474476ef335303cb73a0583d3243d84213"; $hash = hash('sha512', $password . $salt . $username); for($i=1;$i<=1000;$i++){ $hash = hash('sha512', $hash); } return $hash; }
Как понять два пароля? Пароль в бд обновляется? Удалось зайти используя пароль полученный на почту? --- Добавлено --- И? Что за вещь?
Два пароля и не один не подходит !В бд пароль меняется. А вещь я имел в виду скрипт . PHP: function c_hash($username, $password){ $salt = "fc160cd93ccd8b3bdb8e38c1dbe76f2a7c0371c46741b5a98d0b6074b192b9983195148abf077a5b802d803ec16217474476ef335303cb73a0583d3243d84213"; $hash = hash('sha512', $password . $salt . $username); for($i=1;$i<=1000;$i++){ $hash = hash('sha512', $hash); } return $hash;
Функцию? Что с ней не так? --- Добавлено --- Как я уже говорил, отлаживай код. Без отладки, ты никогда не найдешь ошибку. http://phpfaq.ru/debug
При помощи отладки что вы подсказали, раньше он выдавал ошибку теперь не выдаёт будто скрипты работают исправно ((((( Даже в файле gidmc.ru.error.log пусто
Если что-то не устраивает, то проверь всю программу отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
Я почитал. И у меня появился новый вопрос. Я долго копался в сайте и тут набрел на ошибку которая гласит "Что MSQL устарел и будет удален" Покопался в инете и нашел инфу про то что сейчас пользуются MSQLi. Но как же теперь все исправить? Или же не стоит ничего менять в MSQL скриптах? И есть ли программа которая облегчает переход с MSQL на MSQLi?
У тебя есть возможность дать удаленный доступ к сайту? --- Добавлено --- Я бы глянул и сделал за тебя, раз тема в этом разделе.