转到其他网站时保持会话活动

时间:2018-06-29 18:27:25

标签: php session

好的,这就是问题所在。

我有一个带有会员登录和付款模块的网站。成员可以购买东西,但只能在他登录(带有会话)时购买。

当会员想要付款时,他将被重定向到付款提供商的另一页(mollie)。因此,在短时间内,他离开了我的网站。

付款完成后,他会自动发送回我的网站。那就是问题所在:他已注销。

如何使会话保持活动状态?

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

有人知道吗?

2 个答案:

答案 0 :(得分:1)

默认情况下,PHP使用户的会话保持打开状态,直到关闭浏览器为止。您可以通过更改session.cookie-lifetime INI设置来覆盖该行为:

首次创建会话时,请使用此代码,它将cookie时间设置为一年(根据需要使用您自己的时间)。

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

这应该设置PHPSESSID cookie,并且您的会话将是安全的……但这不是最安全的方式,因此,如果您不关心安全问题,请使用它

在启动会话之前,我还会尝试使用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

答案 1 :(得分:0)

问题解决了!这是“ www”和“ non-www”的问题。

我添加了以下代码:

session_set_cookie_params(0, '/', '.mydomain.com');