php -检查服务器上是否存在会话文件

kzmpq1sx  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(119)

我刚刚遇到了一个问题。我将会话ID存储在cookie中,以便在用户离开网站然后再次返回时检索购物篮信息。我的问题是,作为一个测试,我清除了所有的会话,但保留了cookie,但现在页面只是继续加载。
我的问题是,有没有办法先用php为我获取tmp目录,然后测试存储的会话ID是否有效。
此致,
菲尔

编辑

我目前使用

if( isset( $_COOKIE[$cookieKey] ) ) {
    session_id( $_COOKIE[$cookieKey] );
}
// create a new or carry on the existing session
session_start();

这让我觉得

w8ntj3qf

w8ntj3qf1#

这是不可靠和不必要的。相反,在代码中添加检查,以确定$_SESSION超全局是否为空或(甚至更好)具有适当的键:

<?php
if( !isset($_SESSION['foo']) ){
    // User is not fooed yet
    $_SESSION['foo'] = 33;
}
find_records_by_foo($_SESSION['foo']);

**更新:**无论你想用cookie和会话ID做什么,我的答案仍然适用。完成cookie检查后,使用isset()进行会话测试。

ep6jt1vc

ep6jt1vc2#

我需要为不同的用例执行此操作,基本上是在调用session_start()之前检查用户是否具有先前活动的会话。如果其他人像我一样在这里结束,这是您检查服务器上是否存在会话文件的方法。
session_save_path()-获取保存会话的文件目录
session_name()-获取客户端上设置的PHP会话cookie的名称(IE PHPSESSID
$_COOKIE-用于Set-Cookie HTTP标头中提供的cookie的PHP超全局
PHP会话cookie默认以sess_前缀存储。

print file_exists(rtrim(session_save_path(), '/') . '/sess_' . $_COOKIE[session_name()]);

相关问题