За последние 24 часа нас посетили 53343 программиста и 1715 роботов. Сейчас ищут 957 программистов ...

Авторизация

Тема в разделе "PHP для новичков", создана пользователем Elkaz, 6 мар 2008.

  1. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Раньше никогда не возникали проблемы с авторизацией (сессии).
    Сегодня с утра что-то ничего не получается.
    Код:
    PHP:
    1.  
    2. <?
    3. // Admin Panel //
    4. require_once('../lib.php');
    5. require_once('../config.php');
    6. $admin['login'] = 'Admin';
    7. $admin['password'] = 'admin';
    8.  
    9. $login = $_SESSION['mbe_login'];
    10. $page = clean($_GET['page']);
    11. if (empty ($page)) $page = 'welcome';
    12.  
    13. $mbe_admin_auth = $_POST['mbe_admin_auth'];
    14. $mbe_login = $_POST['mbe_login'];
    15. $mbe_password = $_POST['mbe_password'];
    16.  
    17. if (isset ($mbe_admin_auth) && (!empty ($mbe_login) && !empty($mbe_password))){
    18.     if ($mbe_login == $admin['login'] && $mbe_password == $admin['password']){
    19.         $_SESSION['mbe_login'] = $mbe_login;
    20.         $_SESSION['mbe_auth'] = time();
    21.         header("Location: ?");
    22.     }
    23.     else $message = "<span style='color: #cc0000; font-weight: bold;'>Извините, но логин и/или пароль не подходит<br /><a href='?'>вернуться</a></span>";
    24. }
    25. var_dump($login);
    26. echo '<br />';
    27. var_dump($_SESSION['mbe_login']);
    28. ?>
    29.  
    После авторизации $_SESSION['mbe_login'] обнуляется (NULL).
    Где я ошибаюсь?
     
  2. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    а $admin['login'] точно не пустой?
     
  3. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    RomanBush
    6-ая строка
     
  4. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Вообще происходит следущее.
    После авторизации var_dump выдает следущее:
    string(5) "Admin"
    NULL
    Т.е сессия обнулена почему-то.
    После рефреша опять выдается окно авторизации ($login пустой)
     
  5. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Хм. Не заметил.

    А попробуй поставить var_dump сразу после
    проверить - а она точно присваивает?
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    RomanBush
    string(5) "Admin"
    PHP:
    1.  
    2. <?
    3. if (isset ($mbe_admin_auth) && (!empty ($mbe_login) && !empty($mbe_password))){
    4.     if ($mbe_login == $admin['login'] && $mbe_password == $admin['password']){
    5.         $_SESSION['mbe_login'] = $mbe_login;
    6.         var_dump($_SESSION['mbe_login']);
    7.         exit;
    8.         #$_SESSION['mbe_auth'] = time();
    9.         #header("Location: ?");
    10.    }
    11. ?>
    12.  
    После header она почему-то обнуляется.
    Или после того как я пройдусь по ссылке внутри админки...
     
  7. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    а настройки сессий в конфиге пхп какие?
     
  8. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    antonn
    Все нормально. С другими проектами работает.
    Может стоить дать весь код страницы?
     
  9. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    а что в lib и config?
    ошибки не отключены? а то может что то выводится раньше сессий когда они уже существуют...
     
  10. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Хм, странно. Я залил сейчас на сервер - там почему-то работает. Версии РНР у нас отличаются, но раньше проблем не возникало.
    Вот я выложил: warhour.ru/demo_blog/admin/index.php
    Может кто сможет помочь, почему на локалке сессия пытается обнулиться?
     
  11. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    antonn
    error_reporting(7) стоит. Просто notice напрягали :) Поставил 9 - нет, ничего интересного. Разве что undefined index ['mbe_login'], но он пропадает после авторизации.
    в config - константы и подключение к БД
    в lib - функции (т.е там само по себе ничего не вызывается, просто определены сами ф-ии)
     
  12. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Вопрос актуален. Из-за чего может быть сброс сессии на локалке? Какие настройки глянуть?
     
  13. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Куки глянь
     
  14. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Из-за куков например.

    Из жизненного опыта - у клиента был FF, он словил вирус, а может и не вирус, вообщем - глюк, кука после первой перезагрузки страницы слетала. Причём не просто слетала, она была определена, но значение там было другое. Переустановка браузера помогла. Думаю это единичный случай.
     
  15. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    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 )
     
  16. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Так он тебе твои куки показывает. Или ты себе не доверяешь, гы гы =)
     
  17. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Hight
    Аха. А если
    $cookie = serialize($_REQUEST);
    addToDatabase($cookie, $user); ?
    Получается я получу куки юзверя? Или я чего-то не понимаю.

    З.ы
    Проблема с авторизацией на локалке еще не решена :(((
     
  18. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Ну почитай про куки
    http://ru2.php.net/manual/ru/function.setcookie.php
    там параметры есть (path, domain) которые определяют зону видимости.
     
  19. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Hight
    Я в курсе про них. Просто получается, что IPB пофигу?
     
  20. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Ну если ты видишь куку ipb с другого домена значит пофигу )
     
  21. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Я исправил это дело.
    Оказалось, что у _SESSION и _POST одинаковые индексы логина (mbe_login). Хз почему, но локальной Пыхе это не понравилось. Сменил у _SESSION на другое - теперь все работает как надо.
    Хотелось бы узнать, почему была такая ситуация?
    Если ответов нет - тему можно закрыть.
    Спасибо всем ответившим.
     
  22. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Это глюк. Попробуй пхп переустановить.

    p.s. Реально попробуй, интересно.
     
  23. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Elkaz
    кстати, а скажи, какая у тебя версия апача и php?
     
  24. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Ещё интересно - а при registers_globals=on такой глюк не может всплывать?
     
  25. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    не надо ничего переустанавливать, надо конфиги сконфигурировать :)
    чего там устанавливать то, обычное копирование... от того, что еще раз скопируешь ничего не изменится