Добрый день проблема такова, что при регистрации на сайте в bd-MSQL пароль генерируется нормально и по нему можно зайти нормально, после восстановления пароля на почту пароль не подходит проблемы в скрипте восстановление пароля не может быть скрипт написан на самой простой кодировке md 5 ну самое не понятное мне что виной всему этому. У кого могут быть советы или предложения буду рад выслушать за ранние спасибо за ответ.
Мало что понятно. Нет запятых, значит либо пароль новый работает и просто на почту не приходит либо работает только старый и на новый не меняется. Это хэш md5
Пароль новый на почту приходит и меняется на новый в базе данных но по нему не заходит, даже если я семеню пароль в ручную в bd кодированы md 5 искома зная пароль да пустим 123456 он на новом аккаунте не будет уже работать, даже если вставить в bd старый шифрованный пароль он тоже работать не будет, почему не могу разобраться всё облазил не негде похожей причины не было.
Тут надо отладку делать, мало вероятно что кому-то это будет интересно. Выкладывай код, возможно кто-то посмотрит.
login-файл отвечает за подключение к сайту пояснении не для тупых за ранние простить просто такой человек я, lostpass-скрипт для восстановления пароля на почту, register-скрипт по которому производится регистрация на сайте, при выполнение этого скрипта пароль работает в bd-msql
@Zum, может это поможет, у тебя двойной md5 при восстановлении пароля PHP: //перегоняем в md5 хэш $pass = md5(md5($string)); и покажи определение функции register_user()
//перегоняем в md5 хэш $pass = md5($string); изменил на так, пароль приходит как и раньше но также не работает (((
Вы вы имели в виду PHP: 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); }
Этот ? PHP: <?php include 'core/init.php'; logged_in_redirect(); if($settings['register'] == false && logged_in() == false){ protect_page(); } include 'includes/overall/header.php'; require_once('core/functions/recaptchalib.php'); if(empty($_POST) == false) { $fields = array('username', 'password', 'password_again', 'email', 'name', 'recaptcha_response_field'); foreach($_POST as $key=>$value) { if(empty($value) && in_array($key, $fields) == true){ $errors[] = 'All fields are required'; break 1; } } //captcha $resp = recaptcha_check_answer ($settings['recaptcha_private'], $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); //------- $_POST['name'] = htmlspecialchars($_POST['name'], ENT_QUOTES); $_POST['email'] = htmlspecialchars($_POST['email'], ENT_QUOTES); $_POST['username'] = htmlspecialchars($_POST['username'], ENT_QUOTES); if(empty($errors) == true) { if($resp->is_valid == false) { $errors[] = "Captcha is not valid !"; } if(user_exists($_POST['username']) == true) { $errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' is already taken.'; } if(preg_match("/\\s/", $_POST['username']) == true) { $errors[] = 'Your username must not contain any spaces'; } if(strlen($_POST['password']) < 6) { $errors[] = 'Password too short, it must be at least 6 characters!'; } if($_POST['password'] !== $_POST['password_again']) { $errors[] = 'Your passwords need to match!'; } if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) == false) { $errors[] = 'A valid email adress is required'; } if(email_exists($_POST['email']) == true) { $errors[] = 'Sorry, the email \'' . $_POST['email'] . '\' is already in use'; } } } ?> <h2>Регистрация</h2> <?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); } ?> <form action="" method="post"> <label>Имя пользователя</label> <input class="span3" type="text" name="username" /> <label>Пароль</label> <input class="span3" type="password" name="password" /> <label>Пароль Еще Раз</label> <input class="span3" type="password" name="password_again" /> <label>Email</label> <input class="span3" type="text" name="email" /> <label>Псевдоним</label> <input class="span3" type="text" name="name" /><br /> <?php $error = null; echo recaptcha_get_html($settings['recaptcha_public'], $error); ?> <br /><br /> <input class="btn btn-primary span3" type="submit" value="Регистрация" /> </form> <?php } include 'includes/overall/footer.php'; ?>
Вот в математики например, зададим функцию F(x) = 1 + x Если вызвать F(2) то результат будет 1+ 2 = 3 Так вот F(x) это register_user($register_data) Мы тебя просим показать, что она содержит: 1 + x
@Zum, ты знаешь как определяются функции в php? В принципе без разницы где они определяются. Нам нужно определение этой функции. например: PHP: function test(){ //тестовая функция } //это и есть функция
@Zum по каким книгам учишь HTML, CSS, PHP, MySQL? Учил ли в школе информатику и языки программирования?
Учил BASIC давным давно и да я не в курсе как определяется функция могу выложить полностью сайт похоже так будет проще ?
Стоит почитать книги для начинающих по программированию и перед этим школьный курс информатики повторить, это если реально хочешь научиться самостоятельно всё делать. Тогда лучше выкладывай, кто-то посмотрит.
PHP: function register_user($register_data) { global $settings; array_walk($register_data, 'array_sanitize'); $register_data['password'] = c_hash($register_data['username'], $register_data['password']); $active = $register_data['active']; $fields = '`' . implode('`, `', array_keys($register_data)) . '`'; $data = '\'' . implode('\', \'', $register_data) . '\''; mysql_query("INSERT INTO `users` ($fields) VALUES ($data)"); if($active == '0'){ sendmail($register_data['email'], 'Activate your account', " Hello " . $register_data['name'] . ",\n\n To activate your account, access the link below:\n\n " . $settings['url'] . "activate.php?email=" . $register_data['email'] . "&email_code=" . $register_data['email_code'] . " \n\n "); } } 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: $pass = md5(md5($string)); вставь PHP: $pass = c_hash($username, $password); И попробуй авторизоваться с новым паролем. --- Добавлено --- Т.е. восстанови пароль, и потом попробуй авторизоваться.