За последние 24 часа нас посетили 32846 программистов и 3305 роботов. Сейчас ищут 1360 программистов ...

Передача id сессии через url

Тема в разделе "PHP для новичков", создана пользователем Phantik, 16 авг 2009.

  1. Phantik

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

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    В книге вычитал что в том случае когда у клиента отключены cookie идентификатор сессии можно передавать через строку адреса. Автор приводит пример, который мне не понятен до конца, но он работает не правильно. Хотел бы попросить знающих людей прокоментировать смысл данного кода и указать в чем ошибка. Сам код выглядит так:
    PHP:
    1.  
    2. <?php
    3. if(!session_is_registered('nCount'))
    4. {
    5. session_register('nCount');
    6. $nCount = 1;
    7. }
    8. else
    9. {
    10. $nCount++;
    11. }
    12. ?>
    13. <p>Hello, you have seen this page <?php echo $nCount; ?> times.</p>
    14. <p>To continue, <a href=”somepage.php?<?php echo strip_tags(SID)?>”>click here (sompage.php?<?php
    15. echo strip_tags(SID)?>)</A></p>
    16.  
    Первая загрузка проходит вроде как правильно и результат следущий:
    Hello, you have seen this page 1 times.
    To continue, click here (sompage.php?)

    но при клике по ссылке в адресной строке появляется строка http://localhost/test/”somepage.php?” и естественно это не тот результат который ожидался.
    Мне не совсем понятен момент strip_tags(SID) и в целом не понятно в чем ошибка. Подскажите пожалуйста что нужно переправить. Заранее благодарен.
     
  2. Phantik

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

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Зря создал тему так рано. Удалось во всем разобраться самому.
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Phantik
    Твоя книга безнадежно устарела.
    Правильный код для демонстрации передачи SID через URL:
    PHP:
    1. <?php
    2. //По-умолчанию ID сессии передается в cookie
    3. //Это надо отключить.
    4. ini_set('session.use_cookies',0);
    5. session_start(); //Инициализация сессий
    6. if(!isset($_SESSION['count']))
    7. {
    8.         $_SESSION['count'] = 1;
    9. } else {
    10.         $_SESSION['count']++;
    11. }
    12. ?>
    13. Страница просмотрена: <?php echo $_SESSION['count']; ?> раз.<br>
    14. <a href="<?php echo $_SERVER['PHP_SELF'].'?PHPSESSID='.session_id();?>">Обновить</a>
     
  4. Phantik

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

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Да в твоем примере все доходчиво и понятно, я более менее разобрался в этой области. Есть еще один нюанс, что строку
    ?PHPSESSID='.session_id() не нужно добавлять, т.к. PHP добавляет ее самостоятельно. Работать пример конечно будет но ID будет передаваться 2 раза
    Код (Text):
    1.  
    2. http://localhost/test/somepage1.php?PHPSESSID=m42f0rhoo3na25qagijq20opi0&PHPSESSID=m42f0rhoo3na25qagijq20opi0