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 » PHP » Программирование на PHP » изменения пароля!

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

1. voskan - 18 Ноября, 2010 - 22:45:27 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <html>
  4. <head>
  5. <title>Изменение пароля</title>
  6. <style type="text/css">
  7. input, textarea {
  8. border: 1px solid;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <form method="post" action="/password/change_parol.php">
  14.  
  15. <lable>*Логин:</lable><br/>
  16. <input type="text" name="login"><br/>
  17.  
  18. <lable>*Cтарый пароль:</lable><br/>
  19. <input type="password" name="oldpass"><br/>
  20.  
  21. <lable>*Новый пароль:</lable><br/>
  22. <input type="password" name="newpass"><br/>
  23.  
  24. <lable>*Новый пароль:</lable><br/>
  25. <input type="password" name="newpassagain"><p>
  26. <input type="submit" name="send" value="Изменить">
  27. <input type="reset" name="reset" value="Очистить">
  28. </form></br>
  29. <a href="http://voskan.funy.ru">Главная</a>
  30. </body>
  31. </html>
  32.  
  33.  
  34.  

(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP  
  2. if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
  3. if (isset($_POST['oldpass'])) { $oldpass=$_POST['oldpass']; if ($oldpass =='') { unset($oldpass);} }
  4. if (isset($_POST['newpass'])) { $newpass=$_POST['newpass']; if ($newpass =='') { unset($newpass);} }
  5. if (isset($_POST['newpassagain'])) { $newpassagain=$_POST['newpassagain']; if ($newpassagain =='') { unset($newpassagain);} }
  6.  
  7. if($login=='')
  8. {
  9. exit ('Вы не ввели Login!');                      
  10. }
  11. include('bd.php');
  12.         {
  13.                 // берем даныые по переменной сессии пользователя
  14.                 $result = mysql_query("SELECT * FROM user where login=$login, $db");
  15.                 $rows = mysql_fetch_array($result);
  16.                 $pass = $rows['password'];
  17. };
  18.                 $oldpass = trim($_POST['oldpass']);
  19.                 $newpass = trim($_POST['newpass']);
  20.                 $newpassagain = trim($_POST['newpassagain']);
  21.                
  22.                 if($newpass=='' OR $newpassagain=='' OR $oldpass=='')
  23.                 {
  24.                         echo "Введите пароли";
  25.                 }
  26.                 elseif(!preg_match("/^\w{3,}$/", $newpass))
  27.                 {
  28.                         echo("В поле 'Пароль' введены недопустимые символы");
  29.                 }
  30.                 elseif($newpass!=$newpassagain)
  31.                 {
  32.                         echo "Новые пароли несовпадают!";
  33.                 }
  34.                 elseif($pass != md5($oldpass))
  35.                 {
  36.                         echo "Старый пароль неверный!";
  37.                 }
  38.                 else
  39.                 {
  40.                         $mdnewpass = md5($newpass);
  41.                         mysql_query("update user set password=$mdnewpass where login=$login} {
  42.                         echo "Пароль успешно изменен!";
  43.                 };
  44. ?>
  45.  
  46.  


ничего не получаеться Недовольство, огорчение помогите доделать
2. span4ez - 18 Ноября, 2010 - 23:55:38 - перейти к сообщению
#
$oldpass = trim($_POST['oldpass']);
#
$newpass = trim($_POST['newpass']);
#
$newpassagain = trim($_POST['newpassagain']);

Ты уже к переменным записал $_POST подставь за место них переменные из условий...


#
if($login=='')
#
{
#
exit ('Вы не ввели Login!');
#
}
#
include('bd.php');
#
ELSE ПРОПУСТИЛ
{

-------------------------------- -----------

#
else
#
{
#
$mdnewpass = md5($newpass);
#
mysql_query("update user set password=$mdnewpass where login=$login}
{
#
echo "Пароль успешно изменен!";
#
};

Скобки точно все хватают?


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP  
  4.  
  5. include('bd.php');
  6.  
  7. if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
  8.  
  9. if (isset($_POST['oldpass'])) { $oldpass=$_POST['oldpass']; if ($oldpass =='') { unset($oldpass);} }
  10.  
  11. if (isset($_POST['newpass'])) { $newpass=$_POST['newpass']; if ($newpass =='') { unset($newpass);} }
  12.  
  13. if (isset($_POST['newpassagain'])) { $newpassagain=$_POST['newpassagain']; if ($newpassagain =='') { unset($newpassagain);} }
  14.  
  15.  
  16.  
  17.         if($login=='')
  18.                 {
  19.  
  20.                         exit ('Вы не ввели Login!');                      
  21.  
  22.                 }
  23.  
  24.                 else
  25.  
  26.         {
  27.  
  28.                 // берем даныые по переменной сессии пользователя
  29.  
  30.                 $result = mysql_query("SELECT * FROM user where login=$login", $db);
  31.  
  32.                 $rows = mysql_fetch_array($result);
  33.  
  34.                 $pass = $rows['password'];
  35.  
  36.                 };
  37.  
  38.                 $oldpass = trim($_POST['oldpass']);
  39.  
  40.                 $newpass = trim($_POST['newpass']);
  41.  
  42.                 $newpassagain = trim($_POST['newpassagain']);
  43.  
  44.                
  45.  
  46.                 if($newpass=='' OR $newpassagain=='' OR $oldpass=='')
  47.  
  48.                         {
  49.  
  50.                         echo "Введите пароли";
  51.  
  52.                         }
  53.  
  54.                 else
  55.                                
  56.                                 if(!preg_match("/^\w{3,}$/", $newpass))
  57.  
  58.                         {
  59.  
  60.                         echo("В поле 'Пароль' введены недопустимые символы");
  61.  
  62.                         }
  63.  
  64.                 else
  65.                                
  66.                                 if($newpass!=$newpassagain)
  67.  
  68.                         {
  69.  
  70.                         echo "Новые пароли несовпадают!";
  71.  
  72.                         }
  73.  
  74.                 else
  75.                                
  76.                                 if($pass != md5($oldpass))
  77.  
  78.                         {
  79.  
  80.                        echo "Старый пароль неверный!";
  81.  
  82.                         }
  83.  
  84.                 else
  85.  
  86.                         {
  87.  
  88.                         $mdnewpass = md5($newpass);
  89.  
  90.                         mysql_query("update user set password=$mdnewpass where login=$login",$db);
  91.  
  92.                         echo "Пароль успешно изменен!";
  93.  
  94.                         };
  95.  
  96. ?>
3. DlTA - 19 Ноября, 2010 - 00:00:01 - перейти к сообщению
что именно не получается?

впечатление от кода: сильно дофига проверок которые проверяют одно и тоже
а отсюда и структуризация надоедливая.

строковые переменные в запросах желательно брать в кавычки,
зачем выполнять trim для пароля????
voskan пишет:

elseif(!preg_match("/^\w{3,}$/", $newpass))
{
echo("В поле 'Пароль' введены недопустимые символы");
}
чисто по логике стоит в сообщение дописать что возможно пароль короткий, а не только что неправильные симовлы.
4. span4ez - 19 Ноября, 2010 - 00:04:39 - перейти к сообщению
DlTA пишет:






что именно не получается?

впечатление от кода: сильно дофига проверок которые проверяют одно и тоже
а отсюда и структуризация надоедливая.

строковые переменные в запросах желательно брать в кавычки,
зачем выполнять trim для пароля????


Трим парниша правильно сделал иногда бывает даже по своему опыту нажимаю на пробел случайно в конце обычно Улыбка
5. OrmaJever - 19 Ноября, 2010 - 00:10:59 - перейти к сообщению
ошибок очень много. Переписывать нужно код...
А вот это что за новая конструкция?
PHP:
скопировать код в буфер обмена
  1. include('bd.php');
  2.         {
  3.                 // берем даныые по переменной сессии пользователя
  4.                 $result = mysql_query("SELECT * FROM user where login=$login, $db");
  5.                 $rows = mysql_fetch_array($result);
  6.                 $pass = $rows['password'];
  7. };
6. span4ez - 19 Ноября, 2010 - 00:13:06 - перейти к сообщению
Я подправил маленько додумывай сам дальше ....

PHP:
скопировать код в буфер обмена
  1.    
  2.       include('bd.php');
  3.    
  4.             {
  5.    
  6.                       // берем даныые по переменной сессии пользователя
  7.    
  8.                       $result = mysql_query("SELECT * FROM user where login=$login, $db");
  9.    
  10.                       $rows = mysql_fetch_array($result);
  11.  
  12.                       $pass = $rows['password'];
  13.  
  14.       };


Что тебя тут смущает? Радость
7. OrmaJever - 19 Ноября, 2010 - 00:28:07 - перейти к сообщению
Почему нельзя зделать так?
PHP:
скопировать код в буфер обмена
  1. $oldpass = trim($_POST['oldpass']);
  2. $pass = trim($_POST['newpass']);
  3.  
  4. if (!isset($_POST['login']) or !isset($oldpass) or !isset($pass) or !isset($_POST['newpassagain']))
  5.         echo 'все поля обязательны к заполнению';
  6. elseif($pass != $_POST['newpassagain'])
  7.         echo 'новые пароли не совпадают';
  8. else
  9. {      
  10.         include('bd.php');
  11.         $result = mysql_fetch_array(mysql_query('SELECT * FROM user WHERE login="'.mysql_escape_string($_POST['login']).'"'));
  12.         if(!$result['login'])
  13.                 echo 'нету такого пользователя.';
  14.         elseif($result['password'] != $oldpass)
  15.                 echo 'Старый пароль не катит';
  16.         elseif($result['password'] == $oldpass)
  17.         {
  18.                 $newpass = md5($newpass);
  19.                 mysql_query('update user set password="'.md5($pass).'" where login="'.$login.'"');
  20.         echo "Пароль успешно изменен!";        
  21.         }      
  22. }
8. voskan - 19 Ноября, 2010 - 00:30:16 - перейти к сообщению
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/users/funy.ru/voskan/www/pa ssword/change_parol.php


это довольно встречающаяся ошибка.
просто долго мучаюсь с этим скриптом,столько фигни перечитал не смог сделать поэтому решил сюда написать чтоб исправить ошибки.
(Добавление)
как я понимаю ошибку это типо данные не передались из формы поэтому в бд тоже не нашлись,тк в бд реагирует на логин,который вводят в форме
9. DlTA - 19 Ноября, 2010 - 00:32:58 - перейти к сообщению
OrmaJever пишет:
Трим парниша правильно сделал иногда бывает даже по своему опыту нажимаю на пробел случайно в конце обычно
это же пароль!! он и должен состоять как можно из большего набора символов, и уж тем более нельзя обрезать пробелы в старом и новом варианте пароля,
если к примеру чел принудительно вводит пробел, привыкнет к тому что у него пароль содержит пробел, а тут придет новый разработчик и прикинет что эт не фича с тримом а всеже глюк, а тада чел не зайдет под учеткой.

имхо trim в пароле эт логическая ошибка!
10. OrmaJever - 19 Ноября, 2010 - 00:33:13 - перейти к сообщению
это когда она вылезла? Не понял
11. DlTA - 19 Ноября, 2010 - 00:35:49 - перейти к сообщению
voskan, запрос который производится к базе выведите в браузер, будет понятней что спрашивается и что не так.
12. voskan - 19 Ноября, 2010 - 00:40:50 - перейти к сообщению
что и требовалось доказать Улыбка переменные не определены Недовольство, огорчение только в чем причина не пойму. вроде все правильно.
13. OrmaJever - 19 Ноября, 2010 - 00:44:09 - перейти к сообщению
voskan пишет:
переменные не определены

Пока мы вам помогаем нам нужна полная картина происходящего! Хм
Просмотрите все переменые var_dump() и используйте mysql_error()
14. DlTA - 19 Ноября, 2010 - 00:45:10 - перейти к сообщению
как вариант можно в форме указать ссылку на страницу с этим кодом
и посмотреть что же на самом деле передается.
а потом уже смотреть что с чем не сходится
15. voskan - 19 Ноября, 2010 - 00:45:34 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. Notice: Undefined variable: newpass in /var/users/funy.ru/voskan/www/password/change_parol.php on line 18
  3.  
  4. Notice: Undefined variable: login in /var/users/funy.ru/voskan/www/password/change_parol.php on line 19
  5. Пароль успешно изменен!

(Добавление)
cкрипт который писал OrmaJever,после выдает такую ошибку,пароль не меняеться в бд лишь пишет что поменялся
(Добавление)
всем спасибо Улыбка спокойной ночи. завтра попытаюсь разобраться,вроде простой скрипт а столько пишу пишу так и не допишу Улыбка

 

Powered by ExBB FM 1.0 RC1