Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: md5 хеширование
 
 автор: inga   (31.10.2007 в 10:18)   письмо автору
 
 

подскажите как хешируются пароли для занисения в базу и как потом сравнивать с вводимым пользователем паролем? может пример кода есть?

   
 
 автор: Faraon   (31.10.2007 в 10:21)   письмо автору
 
   для: inga   (31.10.2007 в 10:18)
 

Пароль хешируется например md5
$pass=md5($pass);

При сравнении введенного пользователем пароля он также хешируется и сравнивается с хешем в БД

   
 
 автор: inga   (05.11.2007 в 10:37)   письмо автору
 
   для: Faraon   (31.10.2007 в 10:21)
 

сделала как вы сказали, и хеш что в базе не совпадает ч хешом введенного пароля. хотя слово одно и тоже. как же быть? наверно это делать нужно по другому?

   
 
 автор: sim5   (05.11.2007 в 11:13)   письмо автору
 
   для: inga   (05.11.2007 в 10:37)
 

А вы проверяли, что получаете из базы? И как вы сравниваете?

   
 
 автор: cheops   (05.11.2007 в 12:19)   письмо автору
 
   для: inga   (05.11.2007 в 10:37)
 

Не должно быть такого, вы использовали MySQL-функцию MD5()?

   
 
 автор: inga   (05.11.2007 в 12:45)   письмо автору
 
   для: 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) 
    {  ну тут вівожу или нет .......              

   
 
 автор: sim5   (05.11.2007 в 13:41)   письмо автору
 
   для: inga   (05.11.2007 в 12:45)
 

А echo $auth['password'] покажет точно = md5($_POST['password']) ?

   
 
 автор: inga   (05.11.2007 в 14:21)   письмо автору
 
   для: sim5   (05.11.2007 в 13:41)
 

разное показывает

   
 
 автор: sim5   (05.11.2007 в 14:30)   письмо автору
 
   для: inga   (05.11.2007 в 14:21)
 

И не верно видимо то, что вы из базы получаете? Значит проблемы с сохранением хеш в базе, проверьте, что там сохраняется.

   
 
 автор: ddhvvn   (05.11.2007 в 14:44)   письмо автору
 
   для: sim5   (05.11.2007 в 14:30)
 

Иногда бывают траблы из-за "невидимых" символов, наприм, перевод строки,вставляемых в начало или конец строки... у меня такое бывало...
Теперь почти всегда делаю так...

$passw = md5(trim($_POST["passw"]));

..до помещения в базу хеша пароля и при сверке хешей...

   
 
 автор: bronenos   (05.11.2007 в 14:57)   письмо автору
 
   для: ddhvvn   (05.11.2007 в 14:44)
 

trim удаляет с двух сторон, зачем вам rtrim?

   
 
 автор: ddhvvn   (05.11.2007 в 15:12)   письмо автору
 
   для: bronenos   (05.11.2007 в 14:57)
 

Sorry... =)

   
 
 автор: inga   (05.11.2007 в 16:10)   письмо автору
 
   для: ddhvvn   (05.11.2007 в 14:44)
 

ну я же сама ввожу пароли, я же вижу что там нет пробелов и другой ерунды

   
 
 автор: bronenos   (05.11.2007 в 16:19)   письмо автору
 
   для: inga   (05.11.2007 в 16:10)
 

пароль не содержит бэкслэшей, кавычек или апострофов?

   
 
 автор: inga   (05.11.2007 в 16:54)   письмо автору
 
   для: bronenos   (05.11.2007 в 16:19)
 

самые простые слова пробывала, только буквы

   
 
 автор: buro   (05.11.2007 в 17:01)   письмо автору
 
   для: inga   (05.11.2007 в 16:54)
 

может стоит после записи в базу сразу в этом же скрипте прописать код вывода из базы этого хэша и сравнения его хэшем введённого?

   
 
 автор: sim5   (05.11.2007 в 17:10)   письмо автору
 
   для: inga   (05.11.2007 в 16:54)
 

А вы что держите в базе - пароль или его хеш? Какой тип поля, и не короткий ли его размер для хеш, может обрезает его?

   
 
 автор: inga   (05.11.2007 в 17:25)   письмо автору
 
   для: sim5   (05.11.2007 в 17:10)
 

хеш пароля держу в базе, поле varchar(20).
пароль после хеширования вроде 16 символов

   
 
 автор: inga   (05.11.2007 в 17:38)   письмо автору
 
   для: inga   (05.11.2007 в 17:25)
 

да, поле для пароля маленькое, расширила поле для пароля(это я исправила).
Но все равно обсолютно разные получаются значения после кеширование одного и того же слова

   
 
 автор: sim5   (05.11.2007 в 17:47)   письмо автору
 
   для: 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";

Все работает. Проверяйте, вы допускаете где-то (в чем-то) ошибку.

   
 
 автор: sim5   (05.11.2007 в 17:40)   письмо автору
 
   для: inga   (05.11.2007 в 17:25)
 

Короткое поле у вас установите 32

   
 
 автор: inga   (06.11.2007 в 11:26)   письмо автору
 
   для: sim5   (05.11.2007 в 17:40)
 

все дело и в прям в пробелах, видимо они сами добовляются

   
 
 автор: cheops   (06.11.2007 в 12:38)   письмо автору
 
   для: 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);
?>

   
 
 автор: bronenos   (06.11.2007 в 12:45)   письмо автору
 
   для: 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); 
?>

   
 
 автор: Unkind   (06.11.2007 в 12:53)   письмо автору
 
   для: bronenos   (06.11.2007 в 12:45)
 

Позвольте, теперь я покажу свой вариант.

<?php
//...
$password mysql_escape_string$password );
$query "INSERT INTO `users` (`mail`,  `login`, `password`) VALUES ('" $mail "', '" $login "', MD5('" $password "'));"
//...
?>

   
 
 автор: bronenos   (06.11.2007 в 12:57)   письмо автору
 
   для: Unkind   (06.11.2007 в 12:53)
 

мля)) я тоже туплю

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования