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

发布于 2024-10-31 16:17:51 字数 413 浏览 7 评论 0原文

我刚刚遇到一个问题。我将会话 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();

这给了我问题

I've just encountered a problem. I store session ids in a cookie to retrieve the basket info when a user leaves a site and then comes back again. My problem being that as a test i cleared all sessions but kept the cookie but now the page just continues to load.

my question is, is there a way to firstly use php to get the tmp directory for me to then test if the session id stored is valid.

regards,

Phil

EDIT

i currently use

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

which is giving me the problem

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

生死何惧 2024-11-07 16:17:51

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

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

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

That's unreliable and unnecessary. Instead, add checks in your code to find out whether the $_SESSION superglobal is empty or (even better) has the appropriate keys:

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

Update: No matter what you want to do with cookies and session IDs, my answer still applies. Once you're done with your cookie checks, make you session tests with isset().

本宫微胖 2024-11-07 16:17:51

我需要针对不同的用例执行此操作,主要是为了在调用 session_start() 之前检查用户之前是否有活动的会话。如果其他人像我一样最终来到这里,这就是检查服务器上是否存在会话文件的方法。

session_save_path() - 获取保存会话的文件目录

session_name() - 获取客户端上设置的 PHP 会话 cookie 的名称 (IE PHPSESSID)

< code>$_COOKIE - Set-Cookie HTTP 标头中提供的 cookie 的 PHP 超全局

PHP 会话 cookie 默认使用 sess_ 前缀存储。

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

I needed to do this for a different use case, basically to check if a user has a session previously active before calling session_start(). If anyone else ended up here like me, this is how you check if a session file exists on the server.

session_save_path() - get file directory where sessions are saved

session_name() - get name of PHP session cookie set on client (IE PHPSESSID)

$_COOKIE - PHP superglobal for cookies provided in the Set-Cookie HTTP header

PHP session cookies are stored with the sess_ prefix by default.

print file_exists(rtrim(session_save_path(), '/') . '/sess_' . $_COOKIE[session_name()]);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文