Как я могу отправить PHPSESSID в URL? - PullRequest
6 голосов
/ 07 августа 2009

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

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

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

Спасибо!

Ответы [ 4 ]

9 голосов
/ 07 августа 2009

Использование файла cookie или нет настраивается следующими параметрами PHP:

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


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

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


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


Для более подробной информации, вы можете взглянуть на раздел Session Handling руководства: -)

1 голос
/ 07 августа 2009

Делаем это вручную:

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 голос
/ 07 августа 2009

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

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

0 голосов
/ 07 февраля 2017
  1. Создайте страницу входа, пользователь не должен входить без правильного идентификатора и пароля.
  2. После входа в систему пользователь приходит домой, здесь пользователь может выйти из системы и вернуться на страницу входа.
  3. Пользователь не должен иметь доступ к домашней странице, не пройдя страницу входа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...