PHP Session过期问题

时间:2014-01-13 17:10:53

标签: php session

对不起,我不能就已经回答的问题提出问题,因为我刚刚注册了。

我的问题是会话到期。

它工作正常,并在设定时间后退出。

我的问题是,当没有登录时,我重新访问该网站,然后重定向到已注销的页面。我很确定这对我的搜索引起了负面影响。

这是我用过的代码。

// ********************************* //
// ************ SESSIONS *********** //

// stops javascript from getting the session id. phpacademy
ini_set('session.cookie_httponly', true);

// Start the session:
session_start();

// http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // last request was more than 60 minutes ago
    session_destroy();   // destroy session data in storage
    session_unset();     // unset $_SESSION variable for the runtime
    header('Location: logged-out.php');
    }

    $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

// http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
if (!isset($_SESSION['CREATED'])) {
    $_SESSION['CREATED'] = time();
    } else if (time() - $_SESSION['CREATED'] > 1800) {
    // session started more than 30 minutes ago
    session_regenerate_id(true); // change session ID for the current session an invalidate old session ID
    $_SESSION['CREATED'] = time(); // update creation time
    }

// stops them using proxy servers and other ip addresses.
if (isset($_SESSION['last_ip']) === false);{
    $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
    }

if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']){
    session_unset();
    session_destroy();
    }   

// ************ SESSIONS *********** //
// ********************************* //

当我已经退出时,我该怎么做才能停止被重定向到退出???

我可以看到使用statcounter的其他人正在发生这种情况,他们的访问页面是已登出的页面吗?

请告知。

1 个答案:

答案 0 :(得分:0)

正如关于会话的php文档中所指出的,除了简单地调用session_unsetsession_destroy之外,还有更多工作要清理/销毁会话。要永久删除会话,您还必须销毁会话cookie。为此,请参阅here

顺便说一句,在session_unset无效之后调用session_destroysession_unset应该在调用session_destroy之前调用,因为一旦你破坏了会话与当前相关的数据会话将不再可访问(尽管它仍然存储在您的服务器上,并且可以通过会话cookie再次访问)。