Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отключены register_globals - не работает авторизация
 
 автор: LouD   (09.07.2007 в 00:21)   письмо автору
 
 

Привет всем,

Переехали на новый сервер, там в настройках отключены register_globals (на прошлом были включены).

В результате - не могу залогиниться в собственную панель :(

Есть инклюдящийся ко всем модулям файлик au.php

session_start();
if (!isset($_SESSION['AdminLogin'])) 
{
    header("Location: login.php?path=$REQUEST_URI");
}


Собственно фрагмент логина в файле login.php выглядит так:

session_start();
$dta=mysql_fetch_array($res);
$AdminLevel=$dta['level'];
$AdminName=$dta['name'];
$_SESSION['AdminLogin']=$AdminLogin;
$_SESSION['AdminLevel']=$AdminLevel;
$_SESSION['AdminName']=$AdminName;
header("Location: ".$path);


Смысл в том, что переменная AdminLogin не устанавливается... в au.php пробовал выводить ее - пусто.

В чем дело, где копать?
.htaccess содержит только инструкции по логину (пароли по .htpasswd), никаких- сессионнных настроек там нет.

Заранее спасибо за хэлп!

   
 
 автор: parczynski   (09.07.2007 в 00:49)   письмо автору
 
   для: LouD   (09.07.2007 в 00:21)
 

А вообще в login.php не видно чтобы задавалась сама переменная $AdminLogin

   
 
 автор: LouD   (09.07.2007 в 01:00)   письмо автору
 
   для: parczynski   (09.07.2007 в 00:49)
 

эта строчка была выше:

$AdminLogin=trim(html_entity_decode($_POST['AdminLogin']));


этот login.php как бы из двух частей - то есть проверка на метод передачи параметров, если передача по POST - он обрабатывает переданные параметры; если GET - то рисуется форма:

<div STYLE="position:absolute; left:40%; top:100px; width:200px; background-color:#0099FF; border:2px solid #3366EE; text-align:center;">
        <form METHOD="post" NAME="login">
            Логин: &nbsp;&nbsp;<input TYPE="TEXT" NAME="AdminLogin" SIZE="15" MAXLENGTH="15">&nbsp;<br>
            Пароль: <input TYPE="PASSWORD" NAME="pass" SIZE="15" MAXLENGTH="15">&nbsp;<br><br>
            <input TYPE="SUBMIT" VALUE="Войти...">
        </form>
</div>

   
 
 автор: Trianon   (09.07.2007 в 01:50)   письмо автору
 
   для: LouD   (09.07.2007 в 00:21)
 

Вместо $REQUEST_URI и им подобных, следует писать $_SERVER['REQUEST_URI'];

   
 
 автор: LouD   (09.07.2007 в 07:51)   письмо автору
 
   для: Trianon   (09.07.2007 в 01:50)
 

Да, согласен - осталось от старого варианта с global...

Поправить-то поправил, только все равно главная проблема не решена :(

   
 
 автор: Trianon   (09.07.2007 в 09:47)   письмо автору
 
   для: LouD   (09.07.2007 в 07:51)
 

так может надо написать явно $AdminLogin = $_SESSION['AdminLogin']; ?

   
 
 автор: LouD   (09.07.2007 в 22:45)   письмо автору
 
   для: Trianon   (09.07.2007 в 09:47)
 

Мне кажется, мы не совсем друг друга понимаем... :)

В модуле login.php эта переменная берется из переданного формой POST-запроса.

А в модуле проверки au.php я проверяю ее (сессионную переменную AdminLogin на существование.
И честно говоря, я не вижу разницы в коде -
писать

if (!isset($_SESSION['AdminLogin']))


либо

$AdminLogin=$_SESSION['AdminLogin'];
if (is_null($AdminLogin))


все равно не срабатывает...

"не сработка" выглядит так, что меня снова перебрасывает на пустую форму ввода логина/пароля. То есть факт моего логина в системе не зарегистрирован...

   
 
 автор: LouD   (09.07.2007 в 23:06)   письмо автору
 
   для: LouD   (09.07.2007 в 22:45)
 

собственно все заработало...

главная проблема и причина всех ошибок - невнимательность. Для меньшего самобичевания это можно назвать "глаз замылился" :)

Короче причина: не для всех старых глобально-считываемых переменные явно прописал инициализацию... + оставил старый метод $REQUEST_METHOD вместо $_SERVER['REQUEST_METHOD']

спасибо всем, кто пробовал помочь!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования