|
|
|
| подскажите как хешируются пароли для занисения в базу и как потом сравнивать с вводимым пользователем паролем? может пример кода есть? | |
|
|
|
|
|
|
|
для: inga
(31.10.2007 в 10:18)
| | Пароль хешируется например md5
$pass=md5($pass);
При сравнении введенного пользователем пароля он также хешируется и сравнивается с хешем в БД | |
|
|
|
|
|
|
|
для: Faraon
(31.10.2007 в 10:21)
| | сделала как вы сказали, и хеш что в базе не совпадает ч хешом введенного пароля. хотя слово одно и тоже. как же быть? наверно это делать нужно по другому? | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 10:37)
| | А вы проверяли, что получаете из базы? И как вы сравниваете? | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 10:37)
| | Не должно быть такого, вы использовали MySQL-функцию MD5()? | |
|
|
|
|
|
|
|
для: cheops
(05.11.2007 в 12:19)
| | делаю я так
из формы приходит пароль я его хеширую и записываю в базу
$password=md5($password);
$query = "INSERT INTO users (`mail`, `login`, `password`) values ('".$mail."', ''".$login."', '".$password."')";
$result = mysql_query($query);
|
после пытаюсь войти, вот та часть кода где сравниваются пароли
$name = $_POST['name'];
$pswrd = md5($_POST['password']);
$query = "SELECT * FROM users WHERE login = '".$name."'";
$ath = mysql_query($query);
if($ath)
{
$auth = mysql_fetch_array($ath);
if($auth['password'] != $pswrd)
{ ну тут вівожу или нет .......
|
| |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 12:45)
| | А echo $auth['password'] покажет точно = md5($_POST['password']) ? | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 13:41)
| | разное показывает | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 14:21)
| | И не верно видимо то, что вы из базы получаете? Значит проблемы с сохранением хеш в базе, проверьте, что там сохраняется. | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 14:30)
| | Иногда бывают траблы из-за "невидимых" символов, наприм, перевод строки,вставляемых в начало или конец строки... у меня такое бывало...
Теперь почти всегда делаю так...
$passw = md5(trim($_POST["passw"]));
|
..до помещения в базу хеша пароля и при сверке хешей... | |
|
|
|
|
|
|
|
для: ddhvvn
(05.11.2007 в 14:44)
| | trim удаляет с двух сторон, зачем вам rtrim? | |
|
|
|
|
|
|
|
для: bronenos
(05.11.2007 в 14:57)
| | Sorry... =) | |
|
|
|
|
|
|
|
для: ddhvvn
(05.11.2007 в 14:44)
| | ну я же сама ввожу пароли, я же вижу что там нет пробелов и другой ерунды | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 16:10)
| | пароль не содержит бэкслэшей, кавычек или апострофов? | |
|
|
|
|
|
|
|
для: bronenos
(05.11.2007 в 16:19)
| | самые простые слова пробывала, только буквы | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 16:54)
| | может стоит после записи в базу сразу в этом же скрипте прописать код вывода из базы этого хэша и сравнения его хэшем введённого? | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 16:54)
| | А вы что держите в базе - пароль или его хеш? Какой тип поля, и не короткий ли его размер для хеш, может обрезает его? | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 17:10)
| | хеш пароля держу в базе, поле varchar(20).
пароль после хеширования вроде 16 символов | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 17:25)
| | да, поле для пароля маленькое, расширила поле для пароля(это я исправила).
Но все равно обсолютно разные получаются значения после кеширование одного и того же слова | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 17:38)
| |
<?
$pass = md5('inga');
echo $pass;
mysql_query("UPDATE table SET pass='".$pass."'") or die (mysql_error());
$s = mysql_query("SELECT pass FROM table") or die (mysql_error());
$pass = mysql_fetch_row($s);
if (md5('inga')==$pass[0]) echo "PASSWORD";
|
Все работает. Проверяйте, вы допускаете где-то (в чем-то) ошибку. | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 17:25)
| | Короткое поле у вас установите 32 | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 17:40)
| | все дело и в прям в пробелах, видимо они сами добовляются | |
|
|
|
|
|
|
|
для: inga
(05.11.2007 в 12:45)
| | А вы прямо в запросе шифруйте пароль
<?php
$password=md5($password);
$query = "INSERT INTO users (`mail`, `login`, `password`) values ('".$mail."', ''".$login."', 'MD5(".$password.")')";
$result = mysql_query($query);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(06.11.2007 в 12:38)
| |
<?php
$password=md5($password);
$query = "INSERT INTO users (`mail`, `login`, `password`) values ('".$mail."', ''".$login."', 'MD5(\"".$password."\")')";
$result = mysql_query($query);
?>
|
| |
|
|
|
|
|
|
|
для: bronenos
(06.11.2007 в 12:45)
| | Позвольте, теперь я покажу свой вариант.
<?php
//...
$password = mysql_escape_string( $password );
$query = "INSERT INTO `users` (`mail`, `login`, `password`) VALUES ('" . $mail . "', '" . $login . "', MD5('" . $password . "'));";
//...
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(06.11.2007 в 12:53)
| | мля)) я тоже туплю | |
|
|
|