Сессия codeigniter умирает, когда она не должна - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть веб-сайт, который требует, чтобы вы вошли в систему. Он использует сеансы codeigniter.Вот страницы в контексте: http://dancedric.fourthdraft.com/ и http://www.fourthdraft.com/index.php/frontend/index/dancedric

Для того, чтобы показать вам проблему, вам придется фактически войти в систему.пользователь 'демо' (без кавычек) в качестве имени пользователя и пароля.Теперь снова загрузите две ссылки.

Это одна и та же страница.короче просто htaccess'd перенаправить на вторую ссылку.

Если вы заметили в первой ссылке в правом верхнем углу надпись «Логин».На втором месте вместо логина показано ваше имя и показано, что вы уже вошли в систему.

Моя проблема в том, что они на одной странице, и в этом углу у меня есть ifутверждение: if($this->session->userdata('xxx')) затем показать его / ее имя, затем ссылку на панель управления;если нет, просто покажите «логин».

Я не знаю, вмешиваются ли htaccess и mod_rewrite и завершают ли сеанс в первой ссылке.Я не думаю, что сеанс мертв, потому что даже если он говорит «логин» на первой ссылке, он все равно переходит к вашей панели управления, когда вы нажимаете на нее, даже если он просто говорит «логин».Я хочу, чтобы первая ссылка работала как вторая.Если пользователь вошел в систему, покажите его имя и т. Д. По какой-то причине он не работает, как запланировано ...

Ответы [ 2 ]

0 голосов
/ 06 апреля 2015

У меня была такая же проблема, в конце она была настолько очевидной, проблема была в моем htaccess, я кэшировал html, css и т. Д. Если вы поместите это в конец вашего файла .htaccess:

<ifModule mod_headers.c> 
<filesMatch "\\.(html|htm|php)$"> 
Header set Cache-Control "max-age=1, private, must-revalidate" 
</filesMatch> 
</ifModule> 

вы получите свою сессию нормально. Это потому что, например:

  • Вы заходите на свой сайт, и вы не авторизованы. Но вы уже просмотрели страницу для пользователей, не вошедших в систему.
  • Тогда вы войдете в систему
  • Но когда вы вернетесь на предыдущую страницу, вы увидите то же, что и на предыдущей странице, как если бы вы не были зарегистрированы. Это потому, что браузер показывает вам предыдущую и кэшированную страницу, даже если ваш сеанс существует ... Но если вы перезагрузите компьютер, вы увидите правильную страницу.
0 голосов
/ 01 января 2012

попробуйте установить $config['cookie_domain'] = ""; to $config['cookie_domain'] = ".fourthdraft.com"; в config.php

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