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();
}
}
?>