Intereting Posts

Как отправить PHPSESSID в URL?

Я пытаюсь отправить PHPSESSID через переменную HTTP GET для клиента без cookie.

Я видел это в различных реализациях drupal, где ?PHPSESSIONID=123ABC к каждой ссылке, но как я могу указать это в PHP и есть ли способ изменить параметр GET, чтобы он мог быть? Token = 123ABC или даже отправлен через HTTP POST?

Стандартный стек LAMP, работающий с базой Zend.

Благодаря!

Использование cookie или не настроено этими параметрами PHP:

  • session.use_cookies
  • session.use_only_cookies

Если первый установлен, файлы cookie будут использоваться, если это возможно.
PHP должен определять, включены ли файлы cookie или нет, и использовать их только в том случае, если они поддерживаются клиентом.

Чтобы включить передачу идентификатора сеанса с помощью GET вместо файлов cookie, вам может потребоваться активировать session.use_trans_sid , который по умолчанию отключен (что означает, что по defaut идентификатор сеанса передается только cookie – никогда GET) .

Но учтите, что при активации этой опции PHP будет передавать идентификатор сеанса GET по крайней мере для первой страницы, к которой каждый пользователь вашего сайта придет … поскольку у них сначала не будет файла cookie, и единственный способ проверьте, поддерживают ли они файлы cookie, установив один и попытавшись прочитать его на следующей странице.
И пользователи, которые не поддерживают файлы cookie, включая поисковые системы, которые, я бы сказал, будут иметь этот идентификатор сеанса, – и это не приятно 🙁

И вы также можете взглянуть на session.name, чтобы установить имя ключа (установленного на «токен» вместо «PHPSESSID», я имею в виду)

Для получения дополнительной информации вы можете ознакомиться с разделом « Обработка сеанса » руководства 🙂

Вы можете изменить PHPSESSID с помощью session_name() или session.name в файле php.ini (или используя ini_set() ).

Для cookieless-клиентов существует опция session.use_trans_sid php.ini – вы должны знать, что это может вызвать проблемы – например, пользователи, передающие URL-адреса с идентификаторами сеанса друг к другу или поисковые системы, собирающие такие URL-адреса.

Выполнение этого вручную:

 if ($_REQUEST['token']) session_id($_REQUEST['token']); session_start(); print("foo=".$_SESSION['foo']++."<br />". "<a href={$PHP_SELF}?token=".session_id().">link</a><br />"); print("<form method=POST>". "<input type=hidden name=token value=".session_id()." />". "<input type=submit /></form>"); 
  1. Создайте страницу входа, пользователь не должен входить в систему без правильного идентификатора и пароля.
  2. После входа в систему пользователь приходит домой, здесь пользователь может выйти из системы и вернуться на страницу входа в систему.
  3. Пользователь не должен иметь доступ к домашней странице, не проходя страницу входа.