检查会话是否是PHP中的新内容

时间:2012-01-18 01:20:29

标签: php http session session-cookies sessionid

我有一个网站,每个用户会话需要执行一次特定的后端功能。因此,我希望能够确定任何给定的页面视图是否是给定会话中的第一个。

根据PHP文档:

  

session_start()会根据此会话创建会话或恢复当前会话   通过GET或POST请求传递的会话标识符,或通过   cookie中。

那么有没有办法知道会话是在创建还是恢复?

或者这是我必须根据我在服务器上维护的列表检查当前会话ID的情况,以检查它是否已经注册过?如果是这样,这是否需要写入数据库,或者是否有一种不那么麻烦的内存方式呢?

3 个答案:

答案 0 :(得分:8)

<?php
session_start();
if(empty($_SESSION['exists'])){
    //handle completely new session here
}
$_SESSION['exists'] = true;
.... //continue on with normal request

答案 1 :(得分:4)

过去所有记录的检查会话“新奇”的方法都让我失望,所以我倾向于

$_SESSION['existing']=true;

开始会话,然后只是测试

if (isset($_SESSION['existing'])) ...

答案 2 :(得分:2)

检查是否定义了$_COOKIE['PHPSESSID'](或者如果您将其更改为默认值,则为cookie名称。

如果cookie不存在,则刚刚创建了会话。