gpt4 book ai didi

php - 将文件 session 转换为基于数据库的 session

转载 作者:行者123 更新时间:2023-11-29 02:35:09 24 4
gpt4 key购买 nike

我正在尝试将基于文件的普通 session 转换为更易于管理的基于数据库的 session ,从而在扩展和管理 session (包括远程终止 session )方面给予我更大的灵 active 。

这是当前的登录过程:

                if($db)//$u&&$p)
{

$sql = "SELECT * FROM tbl_user WHERE ";
switch(LOGIN_METHOD)
{
case 'both':
$sql .= "(username='".$db->real_escape_string($u)."' OR useremail='".mysql_real_escape_string($u)."')";
break;
case 'email':
$sql .= "useremail='".$db->real_escape_string($u)."'";
break;
default:
$sql .= "username='".$db->real_escape_string($u)."'";
break;
}
$sql .= " AND userpassword = '".md5($sysconfig['salt'].$p)."'";

$rs = @$db->query($sql);

if(!$rs) return false;

if($rs->num_rows)
{
$this->set_session(array_merge($rs->fetch_assoc(),array('expires'=>time()+(15*60))));
$return = true;
}
$rs->free_result();
$db->close();
unset($rs,$sql);
}

我感兴趣的设置 session 的行是:

$this->set_session(array_merge($rs->fetch_assoc(),array('expires'=>time()+(15*60))));

其中,set_session:

private function set_session($a=false)
{
if(!empty($a))
{
$_SESSION['exp_user'] = $a;
}
}

在表中,只存储了用户名、登录邮箱、登录密码和用户ID。

当然,我如何将其转换为基于数据库的 session 系统,由 MySQL 提供支持?

我应该使用 MEMORY 还是 HEAP 类型的表?

最佳答案

你应该看看set_session_save_handler .它允许您指定 session 处理程序如何检索和存储它的数据。编写使用数据库的实现非常简单。

通过这种方法,您可以像往常一样继续使用 $_SESSION

MEMORYHEAP 是同一件事(在 MySQL 中)。您可以选择使用 MEMORY 表,因为 session 是可变的。不过,我对用于此目的的性能特征了解不多。我猜想,如果您的 session 表足够小,它大部分都会在内存中。

关于php - 将文件 session 转换为基于数据库的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com