Проблема с скриптом авторизации - не могу убить сессии.

Armageddance

Новичок
Собственно, изначально система авторизации была рабочая, была построена на константах файла-конфига и имела следующий вид:

PHP:
session_start();
	include("dbconnect.php");   
	if (isset($_POST["authorize"]))
            $password=$_POST["password"];
            $login=$_POST["login"];
	{       
		if (!strcmp($_POST["login"], ADMIN_LOGIN) && !strcmp($_POST["password"], ADMIN_PASS))
		{ 
			$_SESSION["log"] = ADMIN_LOGIN;
			$_SESSION["pass"] = ADMIN_PASS;
			header("Location: index.php");
		}
		else $errorStr = "Invalid login and/or password";
	}
а во всех файлах, в которых требуется авторизация, в начале стояла следующая проверка:

PHP:
include ("dbconnect.php");
session_start();
include("checklogin.php");
if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized
	{
		header("Location: access_admin.php");
		die("<script>window.location='access_admin.php';</script>");
	}
	if (isset($_GET["logout"])) 
	{   
		$_SESSION["log"] = "";
		$_SESSION["pass"] = "";
		unset($_SESSION["log"]);
		unset($_SESSION["pass"]);
		die("<script>window.location='access_admin.php';</script>");
	}
и файл checklogin.php: 
if ((isset($_SESSION["log"]) && isset($_SESSION["pass"])) && (strcmp($_SESSION["log"], ADMIN_LOGIN) || strcmp($_SESSION["pass"], ADMIN_PASS)))
	{
		unset($_SESSION["log"]);
		unset($_SESSION["pass"]);
	}
Собственно, желая организовать авторизацию чеорез БД, я привел ее к следующему:

PHP:
session_start();
	include("dbconnect.php");   
	if (isset($_POST["authorize"]))
            $password=$_POST["password"];
            $login=$_POST["login"];
	{       
                $authorize="SELECT login, password FROM admin WHERE login='$login'";
            $authorize=mysqli_query($connector, $authorize);
            while($row=mysqli_fetch_assoc($authorize)){
                $real_pass=$row['password'];
                $real_login=$row['login'];
                 }
                if (!strcmp($login, $real_login) && !strcmp($password, $real_pass))
                {
                        $_SESSION["log"] = $real_login;
			$_SESSION["pass"] = $real_pass;
			header("Location: index.php");
                }
                else $errorStr = "Invalid login and/or password";
	}
Авторизация происходит, но вот при проверке в файле checklogin.php я не знаю чем заменить ADMIN_LOGIN и ADMIN_PASS. Пока происходит редирект на страницу авторизации без входа.
Если же убрать checklogin.php совсем, то тогда авторизация не срабатывает, то есть, невозможно разлогиниться...

Помогите разобраться плиз.
 

AmdY

Пью пиво
Команда форума
переделай дефайны define('ADMIN_LOGIN', $_SEESION['log']);
 

Armageddance

Новичок
все равно скрипт работает не корректно...
авторизация происходит, но разлогиниться невозможно...
 

Armageddance

Новичок
PHP:
include ("dbconnect.php");
session_start();
define('ADMIN_LOGIN', $_SESSION['log']);
define('ADMIN_PASS', $_SESSION['pass']);
include("checklogin.php");
if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized
	{
		//show authorization form
		header("Location: access_admin.php");
		die("<script>window.location='access_admin.php';</script>");
	}
	//logout?
	if (isset($_GET["logout"])) //logout
	{   
		//show authorization form

		$_SESSION["log"] = "";
		$_SESSION["pass"] = "";
		unset($_SESSION["log"]);
		unset($_SESSION["pass"]);
		die("<script>window.location='access_admin.php';</script>");
	}
и файл checklogin.php:
PHP:
if ((isset($_SESSION["log"]) && isset($_SESSION["pass"])) && (strcmp($_SESSION["log"], ADMIN_LOGIN) || strcmp($_SESSION["pass"], ADMIN_PASS)))
	{
		unset($_SESSION["log"]);
		unset($_SESSION["pass"]);
	}
разлогиниваюсь
PHP:
php if (isset($_SESSION["log"]) && isset($_SESSION["pass"])) echo "<a href='access_admin.php?logout'>Выйти</a>";
 

AmdY

Пью пиво
Команда форума
а зачем ты в checklogin, ансетишь данные из сессии?
 

Armageddance

Новичок
Если честно, вообще не понимаю нафига этот checklogin нужен. Отключил его.
Но все разлогиниться не могу.
 

Armageddance

Новичок
заработало вот в таком виде:

PHP:
//error_reporting(E_ALL);
include ("dbconnect.php");
session_start();
if (empty($_SESSION["log"]) || empty($_SESSION["pass"])) //unauthorized
	{       
		header("Location: access_admin.php");
		die("<script>window.location='access_admin.php';</script>");
	}
	//logout?
	if (isset($_GET["logout"])) //logout
	{   
		//show authorization form

		$_SESSION["log"] = "";
		$_SESSION["pass"] = "";
		unset($_SESSION["log"]);
		unset($_SESSION["pass"]);
		die("<script>window.location='access_admin.php';</script>");
	}
 

С.

Продвинутый новичок
PHP:
        $_SESSION["log"] = "";
        $_SESSION["pass"] = "";
        unset($_SESSION["log"]);
        unset($_SESSION["pass"]);
Предлагаю модернизировать этот кусок:
PHP:
        while(strlen($_SESSION["log"])) $_SESSION["log"]= substr($_SESSION["log"],0,-1);
        while(strlen($_SESSION["pass"])) $_SESSION["pass"]= substr($_SESSION["pass"],0,-1);
        unset($_SESSION["log"]);
        unset($_SESSION["pass"]);
 

Armageddance

Новичок
Блин, в Firefox сайт не открывается, пишет "Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится."
 

craz

Нестандартное звание
вот фаир гавно да??

P.s. оттащите мну от ящика ну!!!
 

Armageddance

Новичок
Да причем тут файр, просто я накосячил с сессиями что-то, третие сутки не могу разобраться как правильно сделать, наверное придется отказаться от авторизации через базу данных.
 
Сверху