[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Смена пароля
strannic
Такая проблема: Есть скрипт востановления пароля PHP, MySQL, по запросу пароль востонавливается и высылается на мыло. Но ведь не для кого не секрет, что сгенерированный пароль трудно запомнить. Пользователь конечно решит пароль сменить на свой. Пишу скрипт за скриптом - не работает. А в инете ничего почитать по этому поводу не могу найти. Может кто где, что видел, подскажите!



Спустя 18 минут, 34 секунды (6.10.2011 - 00:00) dadli написал(а):
Цитата
Пишу скрипт за скриптом - не работает

а например какои скрипт ви пишите?

Спустя 2 минуты, 42 секунды (6.10.2011 - 00:02) strannic написал(а):
Регистрации на сайте - личный кабинет.

Спустя 17 минут, 48 секунд (6.10.2011 - 00:20) ancient mariner написал(а):
Очень упрощённо, принцип:
1) Предварительно получаете id нужного юзера из БД, записываете в переменную (например, $id);
2) Получаете пользовательский пароль, хэшируете
3) Обновляете графу с паролем у юзера, id которого равен id, предварительно полученного вами.


// сначала подключаемся, выбор БД и т.д.
$newpassword = md5 ('новый пароль');
mysql_query ("UPDATE `имя_таблицы` SET `имя_поля_с_паролем` = '". $newpassword ."' WHERE `имя_таблицы`.`id` = '". $id . "' LIMIT 1);


Вот и всё :)

Спустя 10 минут, 29 секунд (6.10.2011 - 00:31) PandoraBox2007 написал(а):
кажеться для защиты от дурака нужно еще в условие добавить WHERE `имя_поля_с_паролем` = '$old_password'

а то можно накликать беду =)

Спустя 1 час, 18 минут, 6 секунд (6.10.2011 - 01:49) imbalance_hero написал(а):
strannic
В БД хеш рандомной строки, на мыло ссылку, "вы можете авторизироваться пройдя по данной ссылке". Страница востановления проверяет хеш в БД и переданный в строге GET.

Спустя 7 часов, 10 минут, 7 секунд (6.10.2011 - 08:59) strannic написал(а):
А можно по подробнее.

Спустя 8 часов, 9 минут, 25 секунд (6.10.2011 - 17:08) Jimmbo написал(а):
Цитата
mysql_query ("UPDATE `имя_таблицы` SET `имя_поля_с_паролем` = '". $newpassword ."' WHERE `имя_таблицы`.`id` = '". $id . "' LIMIT 1);

Не работает sad.gif
Цитата
mysql_query ("UPDATE `users` SET `my` = '$my' WHERE `users`.`id` = '$id' LIMIT 1);

Спустя 19 минут, 29 секунд (6.10.2011 - 17:28) imbalance_hero написал(а):
strannic
Как $_GET сравнить с БД и при совпадении - авторизировать?! smile.gif

Спустя 12 минут, 58 секунд (6.10.2011 - 17:41) strannic написал(а):
Как поменять пароль я вроде понял, а как зделать таксим образом -
сгенерировал, записал в id в хеше в таблицу юзеров. Выслал ссылку на почту юзера. При переходе по ссылке с почты, сверяешь id с ссылки с id в базе, если совпадает то даешь изменить пароль и удаляешь id ссылки восстановления с бд. 
Если не совпадает, удаляешь ссылку с таблицы через сутки кроном.

Спустя 1 час, 42 минуты (6.10.2011 - 19:23) imbalance_hero написал(а):
strannic
Ты вверху генерировал, а сейчас уже не можешь? Или записать сгенерированный "новый пароль", который уже не пароль, а хеш в отдельное поле... это сделал? Делай по пунктам, какой пункт непонятен - спрашивай.

Спустя 52 минуты, 50 секунд (6.10.2011 - 20:15) strannic написал(а):
Меня интересует - способ выслать ссылку на почту юзера и при возврате по ссылке на .... как сформировать страницу для смены пароля.

Спустя 15 минут, 26 секунд (6.10.2011 - 20:31) imbalance_hero написал(а):
Всмысле? Ссылку вставляешь как http://site.ru/page.php?cash=сюда кеш, который будет сверяться.

Я тебя не понимаю, способы выслать ссылку бывают разные? Обычное ПИСЬМО, в нём ОБЫЧНОЕ СОДЕРЖАНИЕ, в СОДЕРЖАНИИ ССЫЛКА!

Сменить пароль из ЛИЧНОГО КАБИНЕТА пользователя.

Спустя 5 часов, 16 минут, 23 секунды (7.10.2011 - 01:47) strannic написал(а):
Проверяю введенный пароль на соответствие с действительным в базе. Выдает - Введён не верный пароль
 if($pass != $arr['pass']){return exit("Введён не верный пароль");}

Может что то с md5.

Спустя 1 час, 47 минут, 6 секунд (7.10.2011 - 03:34) imbalance_hero написал(а):
strannic
Проснулись... ты это к чему?

Спустя 1 минута, 11 секунд (7.10.2011 - 03:36) imbalance_hero написал(а):
 // if($pass != $arr['pass']){return exit("Введён не верный пароль");}
echo 'if('.$pass.' != '.$arr['pass'].')';

Спустя 12 часов, 51 минута, 36 секунд (7.10.2011 - 16:27) strannic написал(а):
Проснулся! Хочу спросить, при смене пароля не плучается проверить на соответствие старый пароль.
 $id = $_SESSION['id'];{.................................
// Сравниваем пароли
if($data['pass'] === md5($_POST['pass']))
if($data['pass'] !== md5($_POST['pass'])){return exit("Введен неверный пароль.");}

Меняет пароль не смотря какой я ввел старый.

Спустя 4 часа, 55 минут, 15 секунд (7.10.2011 - 21:22) PandoraBox2007 написал(а):
для начала упрости

// Сравниваем пароли
if( !empty($_POST['pass']) && $data['pass'] == md5($_POST['pass']) )
{
// код если правильно ввел пароль
} else {
die("Введен неверный пароль или строка пароля пуста.");
}

Спустя 51 минута, 7 секунд (7.10.2011 - 22:14) strannic написал(а):
Ставлю скрипт - При любом раскладе выдает ("Введен неверный пароль или строка пароля пуста.").

Спустя 8 минут, 24 секунды (7.10.2011 - 22:22) strannic написал(а):
При любом раскладе выдает ("Введен неверный пароль или строка пароля пуста.").
 <?
include_once('reat.tpl');
$id = $_SESSION['id'];{

//Обрабатываем наши поля чтобы нам не написали html или js код
$pass = trim(htmlspecialchars($_POST['pass'],ENT_QUOTES));
$newpass = trim(htmlspecialchars($_POST['newpass'],ENT_QUOTES));
$newpas = trim(htmlspecialchars($_POST['newpas'],ENT_QUOTES));
stripslashes($pass);
stripslashes($newpass);
stripslashes($newpas);
//Проверка на пустоту
if($pass == "" && $newpass == "" && $newpas == ""){return exit("Не все поля заполненны");}
// Сравниваем пароли
if( !empty($_POST['pass']) && $data['pass'] == md5($_POST['pass']) )
{
// код если правильно ввел пароль
} else {
die("Введен неверный пароль или строка пароля пуста.");
}
//Если норм, меняем пароль данному юзеру на тот который сгенерировали выше
$pass = md5($newpass);
//Запоминаем сессию
$update = mysql_query ("UPDATE users_nov SET pass = '$pass' WHERE id_users = '$id'")or die(mysql_error());
{
echo "Пароль успешно изменен,";}
}

?>

Спустя 27 минут, 11 секунд (7.10.2011 - 22:49) dadli написал(а):
вот ето напишите в етом в фаиле и смотрите, что виведет ?
echo '$_POST[\'pass\'] = '.$_POST['pass'];
echo "<br>";
echo '$data[\'pass\'] = '.$data['pass'];

Спустя 2 минуты, 14 секунд (7.10.2011 - 22:51) Игорь_Vasinsky написал(а):
1. чё за скобка?
Цитата
$id = $_SESSION['id'];{

2. && смени на || и + empty()
if(empty($pass) || empty($newpass) || empty($newpas)){return exit("Не все поля заполненны");}

3.

сделай вывод
echo $data['pass'] . '<br/>'; 
echo md5($_POST['pass']);


они одинаковы?


Чё за чудесный код?

Цитата
if( !empty($_POST['pass']) && $data['pass'] == md5($_POST['pass']) )
{
  // код если правильно ввел пароль
} else {
  die("Введен неверный пароль или строка пароля пуста.");
}


в if коментарий исполниться... весело, не проще идти от обратного или вставить туда

Цитата
$update = mysql_query ("UPDATE users_nov SET pass = '$pass' WHERE id_users = $id")or die(mysql_error());



а это?

Цитата
{
echo "Пароль успешно изменен,";}
}



Те с нуля надо писать всё. даже разгребать не охото.

Спустя 16 минут, 28 секунд (7.10.2011 - 23:08) imbalance_hero написал(а):
да там просто md5 нужно убрать.

Спустя 5 минут, 41 секунда (7.10.2011 - 23:14) Игорь_Vasinsky написал(а):
так он в БД хешем храниться... должен.

Спустя 24 минуты, 41 секунда (7.10.2011 - 23:38) strannic написал(а):
Все работает. дефект в том что не выдает ошибки при неправельном старом пароле.

Спустя 10 минут, 44 секунды (7.10.2011 - 23:49) Игорь_Vasinsky написал(а):
Эта проверка?

$data['pass'] == md5($_POST['pass']
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.