<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

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

Подписавшись по 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 символа.
Профиль Ответить