Спустя 2 минуты, 22 секунды (6.11.2009 - 00:45) Soldier Ghost написал(а):
Возможно, сгенерировать->Выслать на мэйл->захэшировать->обновить в базе!
Сгенерировать всмысле новый
Сгенерировать всмысле новый
Спустя 25 секунд (6.11.2009 - 00:45) glock18 написал(а):
его обычно генерируют в таких ситуациях. охота восстанавливать - надо менять алгоритм шифрования на обратимый.
Спустя 8 минут, 48 секунд (6.11.2009 - 00:54) romul написал(а):
А как поменять алгоритм шифрования на обратимый?
Спустя 52 секунды (6.11.2009 - 00:55) haZe написал(а):
да,можно сгенерить незнаю, там 6 чисел, захэшировать положить в базу и отправить на почту, все равно пользователь зайдет и поменяет опять на свой, который снова забудет)
Спустя 11 минут, 40 секунд (6.11.2009 - 01:06) live Uucyc написал(а):
а можно просто создать временную страничку и отправить ее пользователю, где он и поменяет свой пароль на новый
Спустя 12 минут, 34 секунды (6.11.2009 - 01:19) romul написал(а):
live Uucyc
Почему временную?
Почему временную?
Спустя 8 часов, 33 минуты, 29 секунд (6.11.2009 - 09:52) stepan написал(а):
Цитата (romul @ 5.11.2009 - 22:19) |
Почему временную? |
Потому что она будет использоваться во время изменения пароля
В общем тебе нужна форма к которой будет доступ со специальным хешем (временным), этот хеш будет отрабатываться и форма будет выдавать нужные данные для изменения.
Спустя 3 часа, 59 минут, 59 секунд (6.11.2009 - 13:52) Gabriel написал(а):
stepan
это четож получаеться, если пароль по привычке раз в неделю меняю, то пролетаю как фанера над парижем?
это четож получаеться, если пароль по привычке раз в неделю меняю, то пролетаю как фанера над парижем?
Спустя 4 дня, 12 часов, 12 минут, 58 секунд (11.11.2009 - 02:05) romul написал(а):
А что если не хешировать пароль.. хранить его просто так в базе.. что бы не париться.... как думаете? чем мне это черевато?
Спустя 7 часов, 1 минута, 57 секунд (11.11.2009 - 09:07) eXtent написал(а):
Код немного кривой, Но покапайся смысл поймеш исправиш как надо сам))
Если у тебя пароль просто в md5 без шифровки, то тебе нужно будет изменить
Потому что у меня он там шифруется "b3p6f"
<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset
($login);} } //заносим введенный пользователем логин в переменную $login,
если он пустой, то уничтожаем переменную
if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset
($email);} } //заносим введенный пользователем e-mail, если он пустой, то
уничтожаем переменную
if (isset($login) and isset($email)) {//если существуют необходимые
переменные
include ("blocks/bd.php");// файл соединения с базой
$result = mysql_query("SELECT id FROM users WHERE login='$login' AND
email='$email'",$db);//такой ли у пользователя е-мейл
$myrow = mysql_fetch_array($result);
if (empty($myrow['id']) or $myrow['id']=='') {
//если активированного пользователя с таким логином и е-mail
адресом нет
exit ("Пользователя с таким e-mail адресом не обнаружено ни в
одной базе <a href='index.php'>Главная страница</a>");
}
//если пользователь с таким логином и е-мейлом найден, то
необходимо сгенерировать для него случайный пароль, обновить его в базе и
отправить на е-мейл
$datenow = date('YmdHis');//извлекаем дату
$new_password = md5($datenow);// шифруем дату
$new_password = substr($new_password, 2, 6); //извлекаем из шифра
6 символов начиная со второго. Это и будет наш случайный пароль. Далее
запишем его в базу, зашифровав точно так же, как и обычно.
$new_password_sh = strrev(md5($new_password))."b3p6f";//зашифровали
mysql_query("UPDATE users SET password='$new_password_sh' WHERE
login='$login'",$db);// обновили в базе
//формируем сообщение
$message = "Здравствуйте, ".$login."! Мы сгененриоровали для Вас
пароль, теперь Вы сможете войти на сайт citename.ru, используя его. После
входа желательно его сменить. Пароль:\n".$new_password;//текст сообщения
mail($email, "Восстановление пароля", $message, "Content-type:text/
plane; Charset=windows-1251\r\n");//отправляем сообщение
echo "<html><head><meta http-equiv='Refresh' content='5; URL=index.php'></head><body>На Ваш e-mail отправлено письмо с паролем.
Вы будете перемещены через 5 сек. Если не хотите ждать, то <a
href='index.php'>нажмите сюда.</a></body></html>";//перенаправляем пользователя
}
else {//если данные еще не введены
echo '
<html>
<head>
</head>
<body>
<p><h2>Забыли пароль?</h2></p>
<form action="#" method="post">
<p>Введите Ваш логин:<br> <input type="text" name="login"></p>
<p>Введите Ваш E-mail: <br><input type="text" name="email"></p>
<p><input type="submit" class="formbutton" name="submit" value="Отправить"></p>
</form>
</body>
</html>';
}
?>
Если у тебя пароль просто в md5 без шифровки, то тебе нужно будет изменить
$new_password_sh = strrev(md5($new_password))."b3p6f";//зашифровали
mysql_query("UPDATE users SET password='$new_password_sh' WHERE
login='$login'",$db);// обновили в базе
Потому что у меня он там шифруется "b3p6f"
Спустя 30 минут, 44 секунды (11.11.2009 - 09:38) Семён написал(а):
Делаешь дополнительную колонку pass_source, т.е. где храниться пароль пользователя. и на случай потери восстанавливаешь из неё.
Спустя 19 минут, 25 секунд (11.11.2009 - 09:57) twin написал(а):
eXtent Да ты я гляжу неуймесси)))
Прекратишь когда нибудь пихать сюда хрень под видом кода?
Это что?
Чего ты тут уничтожаешь? Того, чего небыло никогда? Предварительно к этому "ничего" обратившись?
Дальше что за ересь:
Вот сюда апостроф и закатаю:
Это что за анахронизм?
Ты сначала почитал бы, что это за функция и для чего она, прежде чем писать что попало.
Это что за хрень:
Пароль новый как генерится? Раз в секунду? Да я ведь все акки за пару дней переломаю, ведь это же более чем прогнозируемо.
С мылом ты чего такое вытворяешь там?
echo зачем для html заюзал?
Блин, хватит. Или поправь все или я снесу это безобразие.
Поповщины не потерплю.
Прекратишь когда нибудь пихать сюда хрень под видом кода?
Это что?
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset
($login);} } //заносим введенный пользователем логин в переменную $login,
если он пустой, то уничтожаем переменную
if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset
($email);} } //заносим введенный пользователем e-mail, если он пустой, то
уничтожаем переменную
Чего ты тут уничтожаешь? Того, чего небыло никогда? Предварительно к этому "ничего" обратившись?
Дальше что за ересь:
if (isset($login) and isset($email)) {//если существуют необходимыеЕсли я пробел закатаю или апостроф, все в порядке значит?
переменные
Вот сюда апостроф и закатаю:
потому что ты прямо приглашаешь это сделать. А за одно и всю базу твою стырить и грохнуть потом.
$result = mysql_query("SELECT id FROM users WHERE login='$login' AND
email='$email'",$db);//такой ли у пользователя е-мейл
Это что за анахронизм?
$myrow = mysql_fetch_array($result);
Ты сначала почитал бы, что это за функция и для чего она, прежде чем писать что попало.
Это что за хрень:
exit ("Пользователя с таким e-mail адресом не обнаружено ни вС какого перепуга юзера экситом пугать взялись? Где дизайн, где корректное указание на ошибку? Что за детсад?
одной базе <a href='index.php'>Главная страница</a>");
Пароль новый как генерится? Раз в секунду? Да я ведь все акки за пару дней переломаю, ведь это же более чем прогнозируемо.
С мылом ты чего такое вытворяешь там?
echo зачем для html заюзал?
Блин, хватит. Или поправь все или я снесу это безобразие.
Поповщины не потерплю.
Спустя 3 часа, 49 минут, 46 секунд (11.11.2009 - 13:47) ИНСИ написал(а):
twin я бы посоветовал тебе "вежливее" говорить с людьми! Как ты с людьми, так и они к тебе будут относиться!
eXtent быть может сделать так:
в БД в таблице users cделать `password`, `real_password` и в `real_password` при регистрации заносить настоящий пароль. А потом при восстановлении будешь выстаскивать `real_password` =)
а по твоему "висячему" вопросу, код снизу:
eXtent быть может сделать так:
в БД в таблице users cделать `password`, `real_password` и в `real_password` при регистрации заносить настоящий пароль. А потом при восстановлении будешь выстаскивать `real_password` =)
а по твоему "висячему" вопросу, код снизу:
// если нет нужных "полей" либо они пустые, то выводим форму
if(!($_POST['email']) || $_POST['email'] = '') {
echo '
<html>
<head></head>
<body>
<p><h2>Забыли пароль?</h2></p>
<form action="" method="post">
<p>Введите Ваш E-mail: <br><input type="text" name="email"></p>
<p><input type="submit" class="formbutton" name="submit" value="Отправить"></p>
</form>
</body>
</html>
';
} else {
// обрабатываем данные
$_POST['email'] = mysql_real_escape_string(stripslashes($_POST['email']));
include ("blocks/bd.php");// файл соединения с базой
$result = mysql_query("
SELECT `id`
FROM `users`
WHERE `email` = '{$_POST['email']}'
LIMIT 1
" or die(mysql_error()));//такой ли у пользователя е-мейл
// если результат больше 0
if(mysql_num_rows($result) > 0) {
$row = mysql_fetch_assoc($result);
$distinct_password = uniqid();
mysql_query("
UPDATE `users`
SET `password` = '".md5($distinct_password)."'
WHERE `email` = '{$_POST['email']}'
" or die(mysql_error()));// обновили в базе
//формируем все для сообщения
$eol = '\n';
$charset = 'utf-8';
$from = 'info@mysite.ru';
$subject = "=?utf-8?b?" . base64_encode('Восстановление пароля'). "?=";
$headers = '';
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-type: text/html; charset=\"".$charset."\"" . $eol;
$headers .=
'From: ' . $from . $eol .
'Return-Path: \'' . $from . '\'' .$eol .
'X-Priority: 3' . $eol .
'X-Mailer: My site ' . $eol
;
$message = '
Здравствуйте, ' . $row['login'] . '!
Мы сгененриоровали для Вас пароль, теперь Вы сможете войти на сайт citename.ru, используя его.
После входа желательно его сменить. Пароль:\n' . $distinct_password;
if(!mail($_POST['email'], $subject, $message, $headers)) die('Ошибка при отправке!')
echo '
<html>
<head>
<meta http-equiv="Refresh" content="5; URL=index.php">
</head>
<body>
На Ваш e-mail отправлено письмо с паролем. Вы будете перемещены через 5 сек. Если не хотите ждать, то
<a href="index.php">нажмите сюда.</a>
</body>
</html>';//перенаправляем пользователя
} else {
die('Пользователя с таким e-mail адресом не обнаружено ни в одной базе smile.gif <a href="index.php">Главная страница</a>');
}
}
Спустя 53 минуты, 11 секунд (11.11.2009 - 14:40) romul написал(а):
Семён
Я так и сделал..))
Я так и сделал..))
Спустя 2 часа, 2 минуты, 32 секунды (11.11.2009 - 16:43) twin написал(а):
Цитата |
Семён Я так и сделал..)) |
А зря. Нельзя так к чужой собственности относиться. А пароль - это чужая тайна и чужая собственность. И хранить его в явном виде нельзя.
А хранить рядом с зашифрованным еще и бессмысленно. Зачем вообще тогда его хэшировать?
welbox2
Это кто меня вежливости тут учить собрался? Человек, который тычет пальцем в глаза?
Спустя 4 часа, 5 минут, 24 секунды (11.11.2009 - 20:48) ИНСИ написал(а):
twin если бы я в живую тебя "тычил", другое дело. Фота - фотка! Успокойся уже на счет фотки пожалуйста!!!
Спустя 18 часов, 30 минут, 29 секунд (12.11.2009 - 15:19) romul написал(а):
twin
А почему бессмысленно рядом с зашифрованным хранит?
А почему бессмысленно рядом с зашифрованным хранит?
Спустя 7 минут, 17 секунд (12.11.2009 - 15:26) twin написал(а):
А зачем его вообще шифруют? А для того, что если жулик угонит базу, то не сможет воспользоваться паролями. Человеку свойственно один и тот же пароль использовать на разных ресурсах. Для других сайтов, почты, вебмани... По этому и идет охота за паролями. И порядочный владелец сайта никогда не позволит себе так подставить юзера. Это же ответственность.
Так а какой смысл держать зашифрованный пароль, а рядом открытый? Как минимум это глупо.
Так а какой смысл держать зашифрованный пароль, а рядом открытый? Как минимум это глупо.
Цитата |
twin если бы я в живую тебя "тычил", другое дело. Фота - фотка! Успокойся уже на счет фотки пожалуйста!!! |
Если бы вживую, я бы и полсекунды с тобой общаться бы не стал. А тут впечатление о человеке складывается по различным вторичным признакам.
И впечатление это очень нелицеприятное в данном случае.
Впрочем мне плевать. Горбатого могила исправит.
Спустя 15 минут, 42 секунды (12.11.2009 - 15:42) stepan написал(а):
Цитата (romul @ 12.11.2009 - 12:19) |
А почему бессмысленно рядом с зашифрованным хранит? |
Это тоже самое можно спросить а зачем вы брюки носите на себе?, носите их рядом, например в руках носите.
Спустя 1 день, 1 час, 14 минут, 31 секунда (13.11.2009 - 16:56) romul написал(а):
Убедили... буду просто новый генерировать