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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: изменения пароля!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: пользователь заходит на сайт нажимает изменить пароль и выводит форму
voskan
Отправлено: 18 Ноября, 2010 - 22:45:27
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




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.  


ничего не получаеться Недовольство, огорчение помогите доделать
 
 Top
span4ez
Отправлено: 18 Ноября, 2010 - 23:55:38
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


Помог: 0 раз(а)




#
$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. ?>

(Отредактировано автором: 19 Ноября, 2010 - 00:06:45)

 
 Top
DlTA
Отправлено: 19 Ноября, 2010 - 00:00:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




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

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

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

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



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


Помог: 0 раз(а)




DlTA пишет:






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

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

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


Трим парниша правильно сделал иногда бывает даже по своему опыту нажимаю на пробел случайно в конце обычно Улыбка
 
 Top
OrmaJever Модератор
Отправлено: 19 Ноября, 2010 - 00:10:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ошибок очень много. Переписывать нужно код...
А вот это что за новая конструкция?
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. };


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
span4ez
Отправлено: 19 Ноября, 2010 - 00:13:06
Post Id



Гость


Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010  
Откуда: Рязань, Россия


Помог: 0 раз(а)




Я подправил маленько додумывай сам дальше ....

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.       };


Что тебя тут смущает? Радость

(Отредактировано автором: 19 Ноября, 2010 - 00:13:48)

 
 Top
OrmaJever Модератор
Отправлено: 19 Ноября, 2010 - 00:28:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Почему нельзя зделать так?
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. }


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
voskan
Отправлено: 19 Ноября, 2010 - 00:30:16
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




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


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



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




OrmaJever пишет:
Трим парниша правильно сделал иногда бывает даже по своему опыту нажимаю на пробел случайно в конце обычно
это же пароль!! он и должен состоять как можно из большего набора символов, и уж тем более нельзя обрезать пробелы в старом и новом варианте пароля,
если к примеру чел принудительно вводит пробел, привыкнет к тому что у него пароль содержит пробел, а тут придет новый разработчик и прикинет что эт не фича с тримом а всеже глюк, а тада чел не зайдет под учеткой.

имхо trim в пароле эт логическая ошибка!
 
 Top
OrmaJever Модератор
Отправлено: 19 Ноября, 2010 - 00:33:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




это когда она вылезла? Не понял


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 19 Ноября, 2010 - 00:35:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




voskan, запрос который производится к базе выведите в браузер, будет понятней что спрашивается и что не так.
 
 Top
voskan
Отправлено: 19 Ноября, 2010 - 00:40:50
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




что и требовалось доказать Улыбка переменные не определены Недовольство, огорчение только в чем причина не пойму. вроде все правильно.
 
 Top
OrmaJever Модератор
Отправлено: 19 Ноября, 2010 - 00:44:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




voskan пишет:
переменные не определены

Пока мы вам помогаем нам нужна полная картина происходящего! Хм
Просмотрите все переменые var_dump() и используйте mysql_error()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 19 Ноября, 2010 - 00:45:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




как вариант можно в форме указать ссылку на страницу с этим кодом
и посмотреть что же на самом деле передается.
а потом уже смотреть что с чем не сходится
 
 Top
voskan
Отправлено: 19 Ноября, 2010 - 00:45:34
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




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,после выдает такую ошибку,пароль не меняеться в бд лишь пишет что поменялся
(Добавление)
всем спасибо Улыбка спокойной ночи. завтра попытаюсь разобраться,вроде простой скрипт а столько пишу пишу так и не допишу Улыбка
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB