Раньше никогда не возникали проблемы с авторизацией (сессии). Сегодня с утра что-то ничего не получается. Код: PHP: <? // Admin Panel // session_start(); require_once('../lib.php'); require_once('../config.php'); $admin['login'] = 'Admin'; $admin['password'] = 'admin'; $login = $_SESSION['mbe_login']; $page = clean($_GET['page']); if (empty ($page)) $page = 'welcome'; $mbe_admin_auth = $_POST['mbe_admin_auth']; $mbe_login = $_POST['mbe_login']; $mbe_password = $_POST['mbe_password']; if (isset ($mbe_admin_auth) && (!empty ($mbe_login) && !empty($mbe_password))){ if ($mbe_login == $admin['login'] && $mbe_password == $admin['password']){ $_SESSION['mbe_login'] = $mbe_login; $_SESSION['mbe_auth'] = time(); header("Location: ?"); } else $message = "<span style='color: #cc0000; font-weight: bold;'>Извините, но логин и/или пароль не подходит<br /><a href='?'>вернуться</a></span>"; } var_dump($login); echo '<br />'; var_dump($_SESSION['mbe_login']); ?> После авторизации $_SESSION['mbe_login'] обнуляется (NULL). Где я ошибаюсь?
Вообще происходит следущее. После авторизации var_dump выдает следущее: string(5) "Admin" NULL Т.е сессия обнулена почему-то. После рефреша опять выдается окно авторизации ($login пустой)
RomanBush string(5) "Admin" PHP: <? if (isset ($mbe_admin_auth) && (!empty ($mbe_login) && !empty($mbe_password))){ if ($mbe_login == $admin['login'] && $mbe_password == $admin['password']){ $_SESSION['mbe_login'] = $mbe_login; var_dump($_SESSION['mbe_login']); exit; #$_SESSION['mbe_auth'] = time(); #header("Location: ?"); } ?> После header она почему-то обнуляется. Или после того как я пройдусь по ссылке внутри админки...
а что в lib и config? ошибки не отключены? а то может что то выводится раньше сессий когда они уже существуют...
Хм, странно. Я залил сейчас на сервер - там почему-то работает. Версии РНР у нас отличаются, но раньше проблем не возникало. Вот я выложил: warhour.ru/demo_blog/admin/index.php Может кто сможет помочь, почему на локалке сессия пытается обнулиться?
antonn error_reporting(7) стоит. Просто notice напрягали Поставил 9 - нет, ничего интересного. Разве что undefined index ['mbe_login'], но он пропадает после авторизации. в config - константы и подключение к БД в lib - функции (т.е там само по себе ничего не вызывается, просто определены сами ф-ии)
Из-за куков например. Из жизненного опыта - у клиента был FF, он словил вирус, а может и не вирус, вообщем - глюк, кука после первой перезагрузки страницы слетала. Причём не просто слетала, она была определена, но значение там было другое. Переустановка браузера помогла. Думаю это единичный случай.
Hight Проверяю на всех браузерах. Поведение у всех одинаковое. Почистил куки - P.s Но на сервере-то все заработало грамотно (см. ссылку выше). Значит что-то с настройками Пыхи. P.s.s А что, REQUEST еще показывает и Cookie установленными другими сайтами? Я думал что область видимости ограничена... equest Array: Array ( [page] => options [ipb_stronghold] => fb1770b4ac9fd2b49e9a052a03ab699c [member_id] => 1 [forum_read] => a:6:{i:2;i:1200438055;i:13;i:1200147653;i:15;i:1199556763;i:3;i:1199735559;i:6;i:1199816805;i:11;i:1200657187;} [rte-sidepanel] => open [PHPSESSID] => 23b7699fad6326e43d79ad6e177f0373 )
Hight Аха. А если $cookie = serialize($_REQUEST); addToDatabase($cookie, $user); ? Получается я получу куки юзверя? Или я чего-то не понимаю. З.ы Проблема с авторизацией на локалке еще не решена ((
Ну почитай про куки http://ru2.php.net/manual/ru/function.setcookie.php там параметры есть (path, domain) которые определяют зону видимости.
Я исправил это дело. Оказалось, что у _SESSION и _POST одинаковые индексы логина (mbe_login). Хз почему, но локальной Пыхе это не понравилось. Сменил у _SESSION на другое - теперь все работает как надо. Хотелось бы узнать, почему была такая ситуация? Если ответов нет - тему можно закрыть. Спасибо всем ответившим.
не надо ничего переустанавливать, надо конфиги сконфигурировать чего там устанавливать то, обычное копирование... от того, что еще раз скопируешь ничего не изменится