За последние 24 часа нас посетили 51164 программиста и 1807 роботов. Сейчас ищут 2354 программиста ...

Где в коде начало сессии

Тема в разделе "PHP для новичков", создана пользователем php_user, 3 май 2014.

  1. php_user

    php_user Новичок

    С нами с:
    19 апр 2014
    Сообщения:
    91
    Симпатии:
    0
    Добрый день. Изучаю тему сессий и кук. Везде пишут, что для сессий нужно прописывать функцию

    Код (PHP):
    В интернете есть такой код авторизации на сайте:

    Код (PHP):
    1. if (!isset($_SERVER['PHP_AUTH_USER']))
    2. {
    3.         Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
    4.         Header ("HTTP/1.0 401 Unauthorized");
    5.         exit();
    6. }
    7. else {
    8.         if (!get_magic_quotes_gpc()) {
    9.                 $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
    10.                 $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
    11.         }
    12.         $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
    13.         $lst = @mysql_query($query);
    14.         if (!$lst)
    15.         {
    16.             Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
    17.         Header ("HTTP/1.0 401 Unauthorized");
    18.         exit();
    19.         }
    20.         if (mysql_num_rows($lst) == 0)
    21.         {
    22.            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
    23.            Header ("HTTP/1.0 401 Unauthorized");
    24.            exit();
    25.         }
    26.         $pass =  @mysql_fetch_array($lst);
    27.         if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
    28.         {
    29.             Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
    30.            Header ("HTTP/1.0 401 Unauthorized");
    31.            exit();
    32.         }
    33. }
    Если использовать подобный код, то я например захожу на сайт и вроде как сессии работают (т.е.авторизовавшись, до перезагрузки браузера я могу перемещаться по закрытой части).
    Вопрос- как в этом коде появилась сессия, тут же нет функции session_start()? Что почитать (в мануале и вообще)?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Будет хватать просто проверки идентификатора, зачем хранить пользовательский пароль, непонятно.
    Не агент не ип не проверяется, какой-то бред написан.
     
  3. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Ну если очень примитивно то каждый раз когда ты заходишь в новый документ стартует новая сессия. Включать в PHP её не нужно, она там по дефолту.
    то есть:
    sajt.ru/index.php - старт новой сесии
    sajt.ru/page.php - старт новой сесии
    sajt.ru/page2.php - старт новой сесии
    но если ты переходишь по страницам внутри PHP, сессия не меняется.

    то есть:
    sajt.ru/index.php - старт новой сесии
    sajt.ru/?view=page - сессия не изменилась
    sajt.ru/?view=page2 - сессия не изменилась

    Добавлено спустя 4 минуты 52 секунды:
    Авторизация для посетителя работает так:
    Вошёл на сайт стартует сесия. Если по логике PHP нужна регистрация, а в сесии нет твоего логина и пароля, значит ты не авторизован, и тебе выкидывает окно регистрации. Для этого не надо объявлять новую сессию. Ты и так в ней находишься.

    Добавлено спустя 5 минут 26 секунд:
    соответственно page.php и page2.php должны быть защищены от прямого доступа чтобы ты не смог подсоединится к ним минуя index.php
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Солидарен.
     
  5. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Такое обычно для админок делают, а не для входа на сайт обычным пользователям, где ничего не надо предусматривать вовсе, а просто дать доступ админу, так как он знает как войти по его принципу.

    Хотя и это думаю не нужно. Хватит и обычного входа, главное защитить его от переборов и все, исчерпывающий вариант входа, к тому же можно сделать специальный ключ, верификации, привязки, таймеры, да что угодно, лишь бы работало красиво и безопасно.

    Проверяйте в любом случае ип адрес пользователя и агент. не доверяйте вообще никаким боком пользователям, он ваш враг.
     
  7. php_user

    php_user Новичок

    С нами с:
    19 апр 2014
    Сообщения:
    91
    Симпатии:
    0
    Да, это код для входа в админку (взят из интернета)- вначале копировал, сейчас пытаюсь все осознавать и улучшать