смена пароля

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
Amir
Сообщения: 7
Зарегистрирован: 04 ноя 2013, 14:17

04 ноя 2013, 14:21

Никак не могу сделать смену пароля. уже неделю парюсь( Вот форма и код. При авторизации пользователя данные записываются в сессии. с сессия тоже пробовал делать смену и тож не работает( может я конечно что то накосячил( помогите плиз разобраться и исправить)
<?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) == 1) {
$updated = "UPDATE users SET password = '$newpass' WHERE login = 'login'";
if(mysql_num_rows($update) > 0)
{
echo "Good";
}
else {
echo "mistake";
}
}
else {
echo "Oshibka";
}
}
}


?>


форма
<input type="password" placeholder="Old password" name="lastpass" value="">
<input type="password" placeholder="New password" name="newpass" value="" >
<input type="password" placeholder="Repeat new password" name="newpassw" value="" >
<input type="submit" class="btn_savechange" value="Save" name="savech" />
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

04 ноя 2013, 14:38

Экранировать нужно данные которые передаёшь в базу, иначе поломают нехитрыми sql иньекциями... Нужно использовать LIMIT 1 иначе поиск идёт по всей базе, теоретически база с юзерами штука уникальная и больше 1 результата быть не может.. Я делаю проверку на сам запрос if(!$qery || 0==mysql_num_rows($qery)){не нашёл}else{успех} в вашем коде не хватает mysql_query для запроса UPDATE..
[syntax=Delphi] [/syntax]
Amir
Сообщения: 7
Зарегистрирован: 04 ноя 2013, 14:17

06 ноя 2013, 12:49

вот сделал работает) НО. почему то когда вхожу - авторизуюсь. то я могу вводить и старый и пароль и новый и все равно войдет((( Че не так?(((((((((((((( И еще вопросик. как сделать чтобы ошибки выводились по одной??? а то у меня если я допустим ввел неправильно старый пароль и подтверждение то выдает и ту и ту ошибку(( а хотелось бы по порядку. как это реализовать??
<?php

if(isset($_POST['savech'])){
$lastpass = $_POST['lastpass'];
$newpass = $_POST['newpass'];
$newpassw = $_POST['newpassw'];

if (empty($newpass) or empty($newpassw) or empty($lastpass))
{
echo "Do not put all your passwords!";
}
if ($lastpass == $password)
{

if ($newpassw == $newpass)
{$qery = mysql_query("SELECT * FROM users WHERE login = '$login'") or die(mysql_error());
if (mysql_num_rows($qery) == 1) {
$updated = mysql_query("UPDATE users SET password = '$newpass' WHERE login = '$login'");
if(($updated) > 0)
{echo "Good";}
else {echo "mistake";}
}

}
else
{
echo "Pasword dont mutch!";
}
}
else
{
echo "Password ne sovpadaet s zaregistrirovannim!";
} }
?>
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

06 ноя 2013, 13:11

а хотелось бы по порядку. как это реализовать??
Использовать конструкцию if else
Вообще говорили уже об инъекции, хотя тут можно просто написать
...index.html?password=1&lastpass=1&newpass=2&newpassw=2
после чего любой текущий пароль сменится на '2'
It's a long way to the top if you wanna rock'n'roll
Amir
Сообщения: 7
Зарегистрирован: 04 ноя 2013, 14:17

06 ноя 2013, 14:20

у меня и так используется кострукция if elseи и все равно выводит все ошибки и не одну за другой
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

06 ноя 2013, 14:24

Значит не там где нужно используется
It's a long way to the top if you wanna rock'n'roll
Ответить