Почему выход на всех страницах

ssrr ssrr   13.08.2017 09:04   73  
Почему выход на всех страницах
0
Ответы на вопрос (4) Написать ответ
ssrr
0
ssrr   13.08.2017 09:04
logout.php
[PHP]<?php
session_start();
unset ($_SESSION["login"]);
unset ($_SESSION["password"]);
header ("Location: ".$_SERVER["HTTP_REFERER"]);
exit;
?>[/PHP]
ssrr
0
ssrr   13.08.2017 09:04
index.php
[PHP]<?php
var_dump ($auth) ;
require_once "lib/user_class.php";
$user = User::getObject();
$auth = $user->isAuth();
if (isset ($_POST["reg"])){
$login = $_POST["login"];
$password = $_POST["password"];
$reg_success = $user->regUser($login, $password);
}
elseif (isset ($_POST["auth"])){
$login = $_POST["login"];
$password = $_POST["password"];
$auth_success = $user->login($login, $password);
if ($auth_success){
header ("Location: index.php");
exit;
}
}
?>
<html>
<head>
<title>Регистрация и авторизация пользователей</title>
</head>
<body>
<?php
if (auth){
echo "Здравствуйте, ".$_SESSION ["login"]."(<a href="http://pr-cy.ru/jump/?url=logout.php">Выход</a>)";
}
else {
echo '<h1>Регистрация</h1>
<form name="red" action="index.php" method="post">
<table>
<tr>
<td>Логин</td>
<td>
<input type="text" name="login">
</td>
<tr>
<tr>
<td>Пароль</td>
<td>
<input type="password" name="password">
</td>
<tr>
<tr>
<td clospan="2">
<input type="submit" name="reg" value="Зарегистрироваться">
</td>
<tr>
</table>
</form>
<h1>Авторизация</h1>
<form name="auth" action="index.php" method="post">
<table>
<tr>
<td>Логин</td>
<td>
<input type="text" name="login">
</td>
<tr>
<tr>
<td>Пароль</td>
<td>
<input type="password" name="password">
</td>
<tr>
<tr>
<td clospan="2">
<input type="submit" name="auth" value="Войти">
</td>
<tr>
</table>
</form>';
}
?>
<h1>Регистрация</h1>
<form name="red" action="index.php" method="post">
<table>
<tr>
<td>Логин</td>
<td>
<input type="text" name="login">
</td>
<tr>
<tr>
<td>Пароль</td>
<td>
<input type="password" name="password">
</td>
<tr>
<tr>
<td clospan="2">
<input type="submit" name="reg" value="Зарегистрироваться">
</td>
<tr>
</table>
</form>
<h1>Авторизация</h1>
<form name="auth" action="index.php" method="post">
<table>
<tr>
<td>Логин</td>
<td>
<input type="text" name="login">
</td>
<tr>
<tr>
<td>Пароль</td>
<td>
<input type="password" name="password">
</td>
<tr>
<tr>
<td clospan="2">
<input type="submit" name="auth" value="Войти">
</td>
<tr>
</table>
</form>
</body>
</html>[/PHP]
ssrr
0
ssrr   13.08.2017 09:04
user_class.php

[PHP]<?php
class User{
private $db;
private static $user = null;
private function __construct(){
$this->db = new mysqli("localhost", "root", "", "mybase");
$this->db->query("SET NAMES 'utf8'");
}
public static function getObject(){
if(self::$user === null) self::$user = new User();
return self::$user;
}
public function regUser($login, $password){
if ($login == "") return false;
if ($password == "") return false;
$password = md5($password);
return $this->db->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')");
}
private function chekUser($login, $password){
$result_set = $this->db->query("SELECT `password` FROM `users` WHERE `login` = '$login' ");
$user = $result_set->fetch_assoc();
$result_set->close();
if(!$user) return false;
return $user["password"] === $password;
}
public function isAuth(){
session_start();
$login = $_SESSION["login"];
$password = $_SESSION["password"];
return $this->chekUser($login, $password);
}
public function login($login, $password){
$password = md5($password);
if($this->chekUser($login, $password)){
session_start();
$SESSION["login"] = $login;
$SESSION["password"] = $password;
}
}
public function __destruct(){
if($this->db) $this->db->close();
}
}
?>[/PHP]
c00x
0
c00x   13.08.2017 09:22
Метод login класса User ничего не возвращает, соответственно код:
$auth_success = $user->login($login, $password);
if ($auth_success){
header ("Location: index.php");
exit;
}
Не имеет смысла.

if (auth){
echo "Здравствуйте, ".$_SESSION ["login"]."(<a href="http://pr-cy.ru/jump/?url=logout.php">Выход</a>)";
}

Пропущен символ $ перед именем переменной.

Используйте нормальную IDE и таких глупых вопросов не возникнет.

P.S. Осенний психоз?

Войдите, чтобы написать ответ
Вход Регистрация


Трафик интернет-магазинам
Контекстная реклама, не директ и не адвордс, жми!

Реклама здесь


Вечные индексируемые ссылки в тексте тематических статей. 700 шт. за 450 руб. Гарантия 1 год. Результат неизбежен.