Сессии PHP не переносятся после форм и перенаправлений - PullRequest
1 голос
/ 07 сентября 2010

У меня есть защищенные страницы, на которых все проверяют установленную переменную сеанса, чтобы определить вошедших в систему пользователей, довольно стандартные вещи.Проблемы возникают в том случае, когда я отправляю информацию формы на серверную страницу, которая обрабатывает эти данные и затем перенаправляет на страницу подтверждения успеха / неудачи.В это время сеанс теряется, по крайней мере, сеанс с переменной.Сессия все еще вокруг, потому что я могу вручную перейти к защищенной странице после, и это работает.Просто автоматическое перенаправление с бэкэнд-страницы на защищенную страницу или ссылку на одну из незащищенных страниц после сбоя перенаправления с бэкэнда.Это может быть или не быть связанным, но после посещения нескольких защищенных страниц или выполнения одной из операций, которые используют проблемные внутренние страницы, на моем компьютере есть два сеансовых куки-файла с одного домена: один зарегистрирован на domain.com, а другойwww.domain.com.В конце моего ума об этом, спасибо.

Ответы [ 2 ]

4 голосов
/ 07 сентября 2010

Я вижу здесь две проблемы, но они связаны между собой.

Во-первых, вы, кажется, подпрыгиваете между защищенными (https://) и незащищенными (http://) страницами. Предполагается, что куки-файлы не должны быть разделены между ними, поэтому ваш сеанс прерывается (PHP устанавливает cookie с идентификатором сеанса).

Другой тесно связан, и это разделяет между domain.com и www.domain.com. Печенье может делиться в одном направлении, но не в другом. Не беспокойтесь о том, что: просто выберите одно имя хоста и придерживайтесь его. Затем убедитесь, что вы устанавливаете правильный домен cookie для сессии.

0 голосов
/ 07 сентября 2010

Вы должны вызвать session_start() со своей страницы PHP, прежде чем выводить что-либо, желательно в начале страницы.

Если сеанс уже создан, он возобновит его для этой страницы.

http://php.net/manual/en/function.session-start.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...