держать сеанс активным при переходе на другой сайт - PullRequest
0 голосов
/ 29 июня 2018

Хорошо, вот в чем проблема.

У меня есть сайт с логином пользователя и модулем оплаты. Участник может покупать вещи, но только когда он вошел в систему (с сеансами).

Когда участник хочет заплатить, он перенаправляется на другую страницу платежного провайдера (mollie). Поэтому на короткое время он покидает мой сайт.

Когда оплата будет произведена, он автоматически отправляется обратно на мой сайт. И вот тут возникает проблема: он вышел из системы.

Как мне сохранить сеансы в живых?

<?php
    if(isset($_SESSION['member']) && $_SESSION['time']+300 > time()){
        // logged in
    }
?>

У кого-нибудь есть идея?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Проблема решена! Это была проблема с «www» и «non-www».

Я добавил следующий код:

session_set_cookie_params(0, '/', '.mydomain.com'); 
0 голосов
/ 29 июня 2018

По умолчанию PHP сохраняет сеанс пользователя открытым, пока его браузер не будет закрыт. Вы можете переопределить это поведение, изменив параметр INI session.cookie-life:

Когда вы создаете сеанс в первый раз, используйте этот код, он установит время cookie на год (используйте ваше собственное время по мере необходимости).

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 365);
ini_set('session.gc-maxlifetime', 60 * 60 * 24 * 365);
session_start();

Это должно установить cookie PHPSESSID, и ваш сеанс будет безопасным ... но это не самый безопасный способ, поэтому используйте его, если вы не против вопросов безопасности

Я бы также попробовал кое-что использовать с помощью session_set_cookie_parameters (), чтобы дать сессионному cookie ненулевое время жизни до начала сеанса, или установить для session.cookie_lifetime ненулевое значение.

я думаю, что самый простой способ для вас - это вместо того, чтобы просто session_start, мы должны вводить это на каждой странице, где есть сессия

 $expire = 365*24*3600; // We choose a one year duration

  ini_set('session.gc_maxlifetime', $expire);

 session_start(); //We start the session 

 setcookie(session_name(),session_id(),time()+$expire); 
//Set a session cookies to the one year duration
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...