Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
1

Изменение старого пароля на новый

09.02.2014, 16:15. Просмотров 1241. Ответов 23
Метки нет (Все метки)

Доброго времени суток друзья!)
Помогите исправить вот такую ошибку. При нажатии на кнопку "Сохранить", выдается сообщение "Oshibka". Хотя ввожу все правильно. И в таблице все данные остаются те же( В чем причина?
БД: id, mail, login, password
Вот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if(isset($_POST['savech']))
          {
           $lastpass = $_POST['lastpass'];
           $newpass = $_POST['newpass'];
           $newpassw = $_POST['newpassw'];
              if ($newpassw == $newpass)
              {
          $qery = mysql_query("SELECT * FROM users WHERE login = 'login'") or die(mysql_error());
 
                     if (mysql_num_rows($qery) == 1) {
           $updated = "UPDATE users SET password = '$newpass' WHERE login = 'login'";
           if(($update) > 0)
           {
                   echo "Good";
           }
           else {
                   echo "mistake";
           }
                             }
                             else {
                                     echo "Oshibka";
                             }
              }
                }
и код формы:
HTML5
1
2
3
4
5
6
7
<fieldset><legend><b>Смена пароля</b></legend>
<form method="post" action="D.php"><center>
<input type="password" placeholder="Старый пароль" name="lastpass" value="">
<input type="password" placeholder="Новый пароль" name="newpass" value="" >
<input type="password" placeholder="Повторите пароль" name="newpassw" value="" >
 <input type="submit" class="btn_savechange" value="Сохранить" name="savech" />
 </form></center></fieldset>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2014, 16:15
Ответы с готовыми решениями:

Перенос контента со старого на новый
Привет всем! Есть старый сайт который пошел по пути наибольшего сопротивления - по воле заказчика и...

Получить новый массив из старого
Даны массивы X(1:m), Y(1:m). Получить новый массив Z(1:m) Z=X+Y, если X*Y больше равно 0...

Со старого жд слить все на новый
Доброго времени всем!!! есть 2 жестких Seagate 500Gb один накрывается, а второй новый..и еще прога...

Новый компьютер медленнее старого
купил месяца полтора назад компьютер - Asus P8P67 , i5 2500k , kingston 2x4gb 1600MHz, Western...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
23
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 17:31 2
PHP
1
2
3
4
5
        
$qery = mysql_query("SELECT * FROM users WHERE login = 'login'") or die(mysql_error());
 
if (mysql_num_rows($qery) == 1) 
{
посмотреть в таблицу пользователей, может быть там не 1 пользователь с таким логином, тогда условие не работает

ну и еще

а где сам запрос? mysql_query("UPDATE...")
PHP
1
$updated = "UPDATE users SET password = '$newpass' WHERE login = 'login'";
вот этот кусок работать не будет никак из за того, что такой переменной вроде как нет, да и если запрос выполнить, то тоже
PHP
1
2
3
4
5
6
7
8
9
            
if(($update) > 0)
{
    echo "Good";
}
else 
{
    echo "mistake";
}
думается мне, что как-то так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
mysql_query("UPDATE users SET password = '$newpass' WHERE login = 'login'");
 
$updated = mysql_affected_rows();
 
if($updated > 0)
{
    echo "Good";
}
else 
{
    echo "mistake";
}
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 17:55  [ТС] 3
mav, Можете пожалуйста скинуть правильный код. Как должно быть по вашему?

Добавлено через 8 минут
Цитата Сообщение от mav Посмотреть сообщение
а где сам запрос?
Попробовал сделать вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
if(isset($_POST['savech']))
          {
           $lastpass = $_POST['lastpass'];
           $newpass = $_POST['newpass'];
           $newpassw = $_POST['newpassw'];
              if ($newpassw == $newpass)
              {
          $qery = mysql_query("SELECT * FROM users WHERE login = 'login'") or die(mysql_error());
 
                     if (mysql_num_rows($qery) == 1) {
           mysql_query("UPDATE users SET password = '$newpass' WHERE login = 'login'");
 
$updated = mysql_affected_rows();
 
if($updated > 0)
{
    echo "Good";
}
else 
{
    echo "mistake";
}
                             }
                             else {
                                     echo "Oshibka";
                             }
              }
                }
По Вашему, серовно та же ошибка...(
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 17:55 4
думаю, как-то так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
if(isset($_POST["savech"]))
{
    $lastpass = $_POST["lastpass"];
    $newpass = $_POST["newpass"];
    $newpassw = $_POST["newpassw"];
 
    if ($newpassw == $newpass)
    {
        $qery = mysql_query("SELECT * FROM users WHERE login='login'") or die(mysql_error());
 
        if (mysql_num_rows($qery) > 0) 
        {
            mysql_query("UPDATE users SET password='".$newpass."' WHERE login = 'login'");
 
            $updated = mysql_affected_rows();
 
            if($updated > 0)
            {
                echo "Updated!";
            }
            else 
            {
                echo "User not found!";
            }
        }
        else 
        {
            echo "User not found!";
        }
    }
?>
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 18:00  [ТС] 5
Цитата Сообщение от mav Посмотреть сообщение
думаю, как-то так
В конце забыли поставить }. И все равно выходит ошибка User not found! и логин не меняет(
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 18:06 6
Цитата Сообщение от доминик Посмотреть сообщение
В конце забыли поставить }. И все равно выходит ошибка User not found! и логин не меняет(
ну да, со скобкой недоглядел)

значит что-то не так в таблице (такой записи по условию "WHERE login='login'" нет), если условие if (mysql_num_rows($qery) > 0) не выполняется
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 18:24  [ТС] 7
Цитата Сообщение от mav Посмотреть сообщение
значит что-то не так в таблице (такой записи по условию "WHERE login='login'" нет), если условие if (mysql_num_rows($qery) > 0) не выполняется
Вроде как есть...
Вот бд:
0
Миниатюры
Изменение старого пароля на новый  
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 18:29 8
Цитата Сообщение от доминик Посмотреть сообщение
Вроде как есть...
Вот бд:
ну структуру я вижу, а есть ли там пользователь с логином "login"?
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 18:31  [ТС] 9
Цитата Сообщение от mav Посмотреть сообщение
ну структуру я вижу, а есть ли там пользователь с логином "login"?
Да, один есть
0
Миниатюры
Изменение старого пароля на новый  
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 18:35 10
ну есть-то есть, только логин у него не "login", а "www"

вот так должно отработать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
if(isset($_POST["savech"]))
{
    $lastpass = $_POST["lastpass"];
    $newpass = $_POST["newpass"];
    $newpassw = $_POST["newpassw"];
 
    if ($newpassw == $newpass)
    {
        $qery = mysql_query("SELECT * FROM users WHERE login='www'") or die(mysql_error());
 
        if (mysql_num_rows($qery) > 0) 
        {
            mysql_query("UPDATE users SET password='".$newpass."' WHERE login='www'");
 
            $updated = mysql_affected_rows();
 
            if($updated > 0)
            {
                echo "Updated!";
            }
            else 
            {
                echo "User not found!";
            }
        }
        else 
        {
            echo "User not found!";
        }
    }
}
?>
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 18:47  [ТС] 11
Цитата Сообщение от mav Посмотреть сообщение
ну есть-то есть, только логин у него не "login", а "www"
А если любой зарегестрировавшейся пользователь захочет поменять логин?, а не только www. как это сделать?

Добавлено через 8 минут
Цитата Сообщение от mav Посмотреть сообщение
ну есть-то есть, только логин у него не "login", а "www"
Типо такого:
Место вот этого:
PHP
1
 WHERE login='www'"
Вставить это
PHP
1
WHERE `id`='".$_POST['id']."'"
. Только у меня этот способ че т не работает(
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 19:23 12
Цитата Сообщение от доминик Посмотреть сообщение
А если любой зарегестрировавшейся пользователь захочет поменять логин?, а не только www. как это сделать?
вот пример, если нам каким-то образом известен id пользователя, правда придется это выдавать в php-скрипте, а не чистым html
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$user = 1; // id пользователя
 
echo '<fieldset>';
echo '<legend><b>Смена пароля</b></legend>';
echo '<form method="post" action="D.php">';
echo '<center>';
echo '<input type="password" placeholder="Старый пароль" name="lastpass" value="" />';
echo '<input type="password" placeholder="Новый пароль" name="newpass" value="" />';
echo '<input type="password" placeholder="Повторите пароль" name="newpassw" value="" />';
echo '<input type="hidden" name="userid" value="'.$user.'" />'; // input в котором будет храниться id пользователя
echo '<input type="submit" class="btn_savechange" value="Сохранить" name="savech" />';
echo '</form>';
echo '</center>';
echo '</fieldset>';
тогда при сабмите формы обрабатываем следующим образом
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if(isset($_POST["savech"]))
{
    $lastpass = $_POST["lastpass"];
    $newpass = $_POST["newpass"];
    $newpassw = $_POST["newpassw"];
    $userid = $_POST["userid"];
 
    if ($newpassw == $newpass)
    {
        // sql-запросы реализуем по условию id пользователя
        $qery = mysql_query("SELECT * FROM users WHERE id='".$userid."'") or die(mysql_error());
 
        if (mysql_num_rows($qery) > 0) 
        {
            mysql_query("UPDATE users SET password='".$newpass."' WHERE id='".$userid."'");
 
            $updated = mysql_affected_rows();
 
            if($updated > 0)
            {
                echo "Updated!";
            }
            else 
            {
                echo "User not found!";
            }
        }
        else 
        {
            echo "User not found!";
        }
    }
}
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 19:37  [ТС] 13
Название: Безымянный.jpg
Просмотров: 21

Размер: 22.2 Кб
Цитата Сообщение от mav Посмотреть сообщение
вот пример, если нам каким-то образом известен id пользователя, правда придется это выдавать в php-скрипте, а не чистым html
Не, не..., я хотел сказать что не по id, а вот например: пользователь (любому, который есть в бд) заходит на главную страницу сайта. И тут ему предлагается вот такая форма. При вводе своего mail, меняется так же его пароль
Что бы он не указывал свои: логин,id,mail и т.п. в коде. Мне нужно что бы он их указывал в самой форме
0
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 19:45  [ТС] 14
mail нам нужен для поиска пользователя в бд (типо id), и по нему он уже сверяется и сменяет старый пароль на новый
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 19:45 15
Цитата Сообщение от доминик Посмотреть сообщение
Не, не..., я хотел сказать что не по id, а вот например: пользователь (любому, который есть в бд) заходит на главную страницу сайта. И тут ему предлагается вот такая форма. При вводе своего mail, меняется так же его пароль
Что бы он не указывал свои: логин,id,mail и т.п. в коде. Мне нужно что бы он их указывал в самой форме
я, собственно говоря, об этом и написал. ну, почти с указанным емейлом все еще проще
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<fieldset>
<legend><b>Смена пароля</b></legend>
<form method="post" action="D.php">
<center>
<input type="text" placeholder="Ваш mail" name="usermail" value="" />
<input type="password" placeholder="Старый пароль" name="lastpass" value="" />
<input type="password" placeholder="Новый пароль" name="newpass" value="" />
<input type="password" placeholder="Повторите пароль" name="newpassw" value="" />
<input type="submit" class="btn_savechange" value="Сохранить" name="savech" />
</form>
</center>
</fieldset>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
if(isset($_POST["savech"]))
{
    $lastpass = $_POST["lastpass"];
    $newpass = $_POST["newpass"];
    $newpassw = $_POST["newpassw"];
    $usermail = $_POST["usermail"];
 
    if ($newpassw == $newpass)
    {
        $qery = mysql_query("SELECT id FROM users WHERE mail='".$usermail."'") or die(mysql_error());
 
        if (mysql_num_rows($qery) > 0) 
        {
            mysql_query("UPDATE users SET password='".$newpass."' WHERE mail='".$usermail."'");
 
            $updated = mysql_affected_rows();
 
            if($updated > 0)
            {
                echo "Updated!";
            }
            else 
            {
                echo "User not found!";
            }
        }
        else 
        {
            echo "User not found!";
        }
    }
}
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 19:49  [ТС] 16
Добавлено через 28 секунд
Цитата Сообщение от mav Посмотреть сообщение
я, собственно говоря, об этом и написал. ну, почти с указанным емейлом все еще проще
Круто))) спс большое!
и еще один вопрос, для чего мы сравниваем строки 12 и 18 с 0 в последнем php коде, спс заранее
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 20:08 17
Цитата Сообщение от доминик Посмотреть сообщение
Добавлено через 28 секунд

Круто))) спс большое!
и еще один вопрос, для чего мы сравниваем строки 12 и 18 с 0 в последнем php коде, спс заранее
на 12 строке происходит проверка, есть ли такая запись в базе данных, проще говоря -- нашелся ли такой пользователь вообще.
на 18 строке проверяем произошел ли update.

и вот еще нюанс, неплохо бы данные из формы оборачивать функцией mysql_real_escape_string -- не повредит для безопасности, мало ли какие данные могут из формы прийти
PHP
1
2
3
4
$lastpass = mysql_real_escape_string($_POST["lastpass"]);
$newpass = mysql_real_escape_string($_POST["newpass"]);
$newpassw = mysql_real_escape_string($_POST["newpassw"]);
$usermail = mysql_real_escape_string($_POST["usermail"]);
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 20:11  [ТС] 18
Цитата Сообщение от mav Посмотреть сообщение
на 12 строке происходит проверка, есть ли такая запись в базе данных, проще говоря -- нашелся ли такой пользователь вообще.
на 18 строке проверяем произошел ли update.
Благодарю. Тут еще один вопрос), как еще сделать вывод сообщения на совпадение новых паролей при замене старого? если новые пароли не совпадают то выводится ошибка что пароли несовпадают
0
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
09.02.2014, 20:17 19
Цитата Сообщение от доминик Посмотреть сообщение
Благодарю. Тут еще один вопрос), как еще сделать проверку на совпадение новых паролей при замене старого?
она, собственно говоря, уже есть
PHP
1
2
if ($newpassw == $newpass)
{
я бы вот так сделал, чтобы проверка была более кошерной проверить заодно и правильность введения старого пароля там, где мы проверяем существование пользователя
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
if(isset($_POST["savech"]))
{
    $lastpass = mysql_real_escape_string($_POST["lastpass"]);
    $newpass = mysql_real_escape_string($_POST["newpass"]);
    $newpassw = mysql_real_escape_string($_POST["newpassw"]);
    $usermail = mysql_real_escape_string($_POST["usermail"]);
 
    if ($newpassw == $newpass)
    {
        $qery = mysql_query("SELECT id FROM users WHERE mail='".$usermail."' AND password='".$lastpass."'") or die(mysql_error());
 
        if (mysql_num_rows($qery) > 0) 
        {
            mysql_query("UPDATE users SET password='".$newpass."' WHERE mail='".$usermail."'");
 
            $updated = mysql_affected_rows();
 
            if($updated > 0)
            {
                echo "Пароль обновлен!";
            }
            else 
            {
                echo "Пароль не обновлен!";
            }
        }
        else 
        {
            echo "Пользователь не найден!";
        }
    }
    else
    {
        echo "Пароли не совпадают!";
    }
}
1
2 / 2 / 2
Регистрация: 01.12.2010
Сообщений: 264
09.02.2014, 20:27  [ТС] 20
Цитата Сообщение от mav Посмотреть сообщение
правильность введения старого пароля
прикольненько спс)

Добавлено через 2 минуты
Цитата Сообщение от mav Посмотреть сообщение
мало ли какие данные могут из формы прийти
И на счет этого), прийти в бд вы имели в веду?)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2014, 20:27

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Сформировать новый массив из старого
Как переделать функцию ToFile чтобы она не записывала в файл данные а создавала новый массив по...

Замена старого SSD на новый
Добрый вечер, будьте добры помочь, хочу обновить текущий SSD 128 гб, на новый SSD от 200 гб. По...

сделать новый масив из старого по условию
Подскажите в чём суть задания. И как это реализовать? Хотяб условие... Дан массив целых чисел....

Как перелить PR старого сайта на новый?
Люди - прошу совета! Переделали сайт - будем вешать на тот же домен , на котором старый висит....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.