<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Криво работает md5 или кривые руки
13.02.2013 15:36:33 Криво работает md5 или кривые руки Сообщение #1
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

Добрый день Всем.

Встретился с такой проблемой:

когда провожу регистрацию пользователя и пароль записываю в виде - $password = md5 ("$password"; вводится одно значение.

а когда в поле пароля авторизации ввожу тоже значение то оно отличается. Я искал ошибку пошагово с помощью условий и вывода на эран

Zawel v LOGIN (пройдено $user->login)
Parol vvedenniu polzovatelem - 81dc9bdb52d04dc20036dbd8313ed055 (то што я ввел в поле авторизации почему то длиннее чем при регистрации)
Zawel v CHECKUSER (условие $this->checkUser)
zapros prowel
Prowlo fetch_assoc()
Array ( [password] => 81dc9bdb52d04dc2 ) (То что хранится в базе , и оно короче)
error aut
ошибка при сравнении паролей

Никак не разберусь везде писал $password = md5 ("$password"

на всякий случай вышдю код класса и index

P/S Прохожу курс по ПХП с нуля до Гуру, раздел закрепление знаний Mysql и ПХП

Index.php

<?
require_once ("lib/Class_User.php";
$user1 = User::getObject();
if($_POST["send_reg"])
{
$login = $_POST["login"];
$password = $_POST["password"];
$result_add = $user1->addUser($login, $password);
if ($result_add)
{
echo "Вы зарегистрировались";
}
else
{
session_start;
$_SESSION["result_add"] = "Введен неверный логин или пароль";
}
}
elseif ($_POST["send_auth"])
{
$login = $_POST["login"];
$password = $_POST["password"];
$result_auth = $user1->login($login, $password);
if ($result_auth) echo "Autorezition<br>";
else echo "<br>error auth<br>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Работа с базой данных</title>
</head>

<body>
<h1>Регистрация пользователя</h1>
<form action="index.php" name="reg" method="post">
<table>
<tr>
<td>Логин: </td>
<td>
<input type="text" name="login" />
</td>
<td>
<span style="color:#F00"><? if ($result_add == false) echo $_SESSION["result_add"]; ?> </span>
</td>
</tr>
<tr>
<td>Пароль: </td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="send_reg" value="Зарегистрироваться" />
</td>
<td>
<span style="color:#F00"><? if ($result_add == false) echo $_SESSION["result_add"]; ?> </span>
</td>
</tr>
</table>
</form>

<h1>Авторизация пользователя</h1>
<form action="index.php" name="auth" method="post">
<table>
<tr>
<td>Логин: </td>
<td>
<input type="text" name="login" />
</td>
<td>
<span style="color:#F00"><? if ($result_add == false) echo $_SESSION["result_add"]; ?> </span>
</td>
</tr>
<tr>
<td>Пароль: </td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="send_auth" value="Вход" />
</td>
<td>
<span style="color:#F00"><? if ($result_add == false) echo $_SESSION["result_add"]; ?> </span>
</td>
</tr>
</table>
</form>
</body>
</html>

Class

<?
class User
{
private $db;
static $proverka = null;
private function __construct ()
{
$this->db = new MySQLi("localhost", "root", "", "mybase";
$this->db->query("SELECT NAMES `UTF8`";
}
public static function getObject()
{
if(self::$proverka === null) self::$proverka = new User();
return self::$proverka;
}
public function addUser($login,$password)
{
if ($login == "" return false;
if ($password == "" return false;
$password = md5($password);
return $this->db->query("INSERT INTO `Users` (`login`, `password`) VALUES ('$login', '$password')";

}

public function checkUser($login, $password)
{
echo "Zawel v CHECKUSER<br>";
$check = $this->db->query("SELECT `password` FROM `Users` WHERE `login` = '$login'";
if ($check) echo "zapros prowel<br>";
$arraycheck = $check->fetch_assoc();
if ($arraycheck) echo "Prowlo fetch_assoc()<br>";
print_r ($arraycheck);
if (!$arraycheck) return false;
return $password === $arraycheck["password"];
}

public function login($login, $password)
{
echo "Zawel v LOGIN<br>";
$password = md5 ($password);
echo "Parol vvedenniu polzovatelem - ".$password."<br>";
if ($this->checkUser($login,$password))
{
echo "Paroli verni<br>";
session_start();
$_SESSION["login"] = $login;
$_SESSION["password"] = $password;
return true;
}
}

public function __destruct()
{
if($this->db) $this->db->close();
}
}
?>
Профиль
13.02.2013 15:36:59 Криво работает md5 или кривые руки Сообщение #2
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

и почему я ввожу кол с отступами а тут он без)
Профиль
13.02.2013 18:07:13 Криво работает md5 или кривые руки Сообщение #3
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Используйте BB-коды, тогда и будут отступы. И проверяйте $password на каждом шагу, на каждой строчке и смотрите, где оно отличается от того, что нужно. Возможно, Вы его дважды где-то хэшируете, может ещё что-то. И вообще md5($password), никаких кавычек использовать не надо.
Профиль
14.02.2013 11:29:53 Криво работает md5 или кривые руки Сообщение #4
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

Проблему нашел)) все таки кривые руки) в базе поставил на пароль ограничение 16 символов)
Профиль
15.02.2013 19:11:50 Криво работает md5 или кривые руки Сообщение #5
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Еще вопрос не по теме. Md5-хэширование возвращает 32 символа, независимо от длины начальной строки. Это прикол самой функции или у меня опять асфальт под лыжами?
Профиль
15.02.2013 21:02:44 Криво работает md5 или кривые руки Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Всё правильно, данная функция всегда возвращает 32 символа.
Профиль