При переходе с HTTP на HTTPS теряется сессия

Всем привет. На моем сайте изменение личных данных пользователя производится через https, т.е. если пользователь просто ходит по различным страницам сайта, то это он делает через обычный http, а если он изменяет свои личные данные то они отправляются на сервер через https, и при переходе c http на https теряется сессия и пользователя выкидывает из личного кабинета. Можно ли как то настроить сервер (nginx) или же как то стартовать сессию так что бы она сохранялась и на http и на https?

При этом на http://mysite.com/ и https://mysite.com/ куки PHPSESSID имеют одинаковые значения, по идее и сессия должна быть...

1 ответов


Теряется не сессия. Теряются куки. И это нормально. В том смысле, что так и должно быть.
Проблему можно запинать ногами, передавая id сессии принудительно через url
В несекурной части делаем ссылкам добавку:


'<a href="https://bla-bla-bla?session="' .session_id().'> link </a>';
 

А в секурной соответствено


session_id($_GET['session']);
session_start();
 

Только это неправильно. Потому, что теряется весь смысл секурного протокола. Он для того и существует отдельно и сам по себе и даже на порту другом, чтобы смешивать нельзя было.