Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите со сменой пароля
Форумы портала PHP.SU » » Вопросы новичков » Помогите со сменой пароля

Страниц (1): [1]
 

1. Kreks - 11 Сентября, 2011 - 15:48:33 - перейти к сообщению
Приветствую, делаю скрипт смены пароля, не могу сделать правильный запрос на выборку из базы старого и сравнения его с введенным старым паролем.

PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_POST['password'])) {
  3. $password = $_POST['password'];
  4. $password = stripslashes($password);
  5. $password = htmlspecialchars($password);
  6. $password = trim($password);
  7.  
  8. [b]$resu = mysql_query("SELECT * FROM users SET password='$password' WHERE login='$login'",$db);[/b]
  9.  
  10. $oldpass = mysql_fetch_array($resu);
  11. $resuext = mysql_query($resu) or die(mysql_error());
  12.  
  13. if ($password != $oldpass){
  14. die ("Введенный вами старый пароль является не правильным если вы забыли пароль,то воспользуйтесь востановлением пароля!");
  15. }
  16.  
2. biperch - 11 Сентября, 2011 - 16:41:11 - перейти к сообщению
ну для начала скажу вот что пароли никто не хранит в открытом виде, они как минимум захешированы MD5. По этом тебе нужно принятый пароль хешануть и его сравнивать с тем который в базе
3. Kreks - 11 Сентября, 2011 - 17:55:46 - перейти к сообщению
biperch пишет:
ну для начала скажу вот что пароли никто не хранит в открытом виде, они как минимум захешированы MD5. По этом тебе нужно принятый пароль хешануть и его сравнивать с тем который в базе

Естественно я их хеширую в коде выше.
4. LIME - 11 Сентября, 2011 - 18:02:35 - перейти к сообщению
посмотрите на 8 и 11 строки
получается
PHP:
скопировать код в буфер обмена
  1. $resuext = mysql_query(mysql_query("SELECT * FROM users SET password='$password' WHERE login='$login'",$db)) or die(mysql_error());
ну не п...ц ли?
5. White - 11 Сентября, 2011 - 18:25:32 - перейти к сообщению
LIME Радость
Kreks вообще это делается так
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `users` SET `password`="new_pass" WHERE `login`="login" AND `password`="old_pass"

если логин берется из сессии, то mysql_affected_rows() будет равно нулю только в случае неправильного пароля.
6. Kreks - 11 Сентября, 2011 - 18:41:49 - перейти к сообщению
White пишет:
LIME Радость
Kreks вообще это делается так
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `users` SET `password`="new_pass" WHERE `login`="login" AND `password`="old_pass"

если логин берется из сессии, то mysql_affected_rows() будет равно нулю только в случае неправильного пароля.

Ага, это мы уже меняем пароль и обновляем его в базе, а мне надо только еще человека выбрать с его паролем (нынешнем) и сверить выбранный из базы пароль с тем,что пользователь вводит в поле старый пароль.
LIME исправил у себя.
7. LIME - 11 Сентября, 2011 - 18:47:03 - перейти к сообщению
это всетаки п...ц
внимательнее запрос смотреть надо
там УЖЕ все проверено после AND
Kreks пишет:
LIME исправил у себя.

нихрена не исправил
8. Kreks - 11 Сентября, 2011 - 18:49:27 - перейти к сообщению
LIME пишет:
нихрена не исправил

Я же сказал исправил у себя, у себя значит у себя в коде,и да, всем спасибо,но я уже сам сделал проверку на правильность старого пароля !
9. LIME - 11 Сентября, 2011 - 18:49:35 - перейти к сообщению
может рассказать запрос человеческим языком если непонятно?

 

Powered by ExBB FM 1.0 RC1