Возможно ли, что куки не включены?
Чтобы иметь возможность связывать переменные сеанса с конкретным экземпляром клиента (т. Е. Как переменные сеанса могут использоваться в вашем браузере и в моем браузере одновременно, не вступая в конфликт), "идентификатор сеанса" (или «SID») генерируется за сеанс. Этот идентификатор хранится на сервере, а также на клиенте, обычно в форме файла cookie. Однако, если куки не включены, идентификатор сеанса передается как часть строки запроса URL-адреса в каждом запросе, чтобы сервер мог знать, какой идентификатор сеанса принадлежит клиенту.
Когда вы перенаправляете вызовом header()
, PHP автоматически не вставляет SID в новый запрос, поэтому вам нужно будет добавить его самостоятельно в виде:
header("Location: my_url.com/my_page.php?" . SID)
где SID
- это константа, определенная PHP, которая содержит необходимую часть строки запроса (эквивалентна session_name() . '=' . session_id()
, если существует идентификатор сеанса).
См. Передача идентификатора сеанса для получения более подробной информации.