php – 使用$_SESSION超全局获取当前在线用户并将其重新设置回当前会话数据是否很难?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 使用$_SESSION超全局获取当前在线用户并将其重新设置回当前会话数据是否很难?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1898字,纯文字阅读大概需要3分钟。
内容图文
![php – 使用$_SESSION超全局获取当前在线用户并将其重新设置回当前会话数据是否很难?](/upload/InfoBanner/zyjiaocheng/785/a290b548b12d4d54a693f48cc3f50987.jpg)
我正在使用数据库来存储会话数据.我创建了一些函数来通过当前活动会话进行查询,并返回一些要在当前页面上使用的值.使用单个查询就可以轻松获得打开会话的数量
“从UserSessions中选择SessionData”
并返回查询返回的行数.
然后,我想确定哪些网站用户目前处于“在线”状态.会话存储正在查看网站的用户的UserID.我搜索和搜索,似乎只找到session_decode函数来解码似乎是序列化数据(但反序列化不起作用).这里唯一的问题是,session_decode会自动填充$_SESSION超全局.所以我的问题是,暂时存储$_SESSION数据是否“不好”,对当前在线的每个用户使用session_decode,然后将$_SESSION变量重置为临时存储的数据?
function getLoggedInUsers() {
//NEED SOME ERROR HANDLING AROUND DB STUFF
$oConn = DB::connect(RF_DSN);
$oPrep = $oConn->prepare("SELECT SessionData FROM UserSessions WHERE SessionData LIKE ?");
$oRes = $oConn->execute($oPrep, array("%UserID%"));
$aCurSession = $_SESSION; //STORE SESSION DATA TO RESET LATER
$aLoggedInUsers = array();
while ($oRow = $oRes->fetchRow(DB_FETCHMODE_ASSOC)) {
if ($oRow == NULL) {
break;
}
$_SESSION = array();
session_decode($oRow["SessionData"]);
$aLoggedInUsers[] = new User($_SESSION["UserID"]);
$_SESSION = array();
}
$_SESSION = $aCurSession; //RESET SESSION DATA TO CURRENT ONLINE USER
return $aLoggedInUsers;
}
在我看来这可行,但有没有任何已知的情况,这可能会失败,然后当前用户最终会得到一些其他用户的会话数据,有效地作为可能的管理员或其他东西登录?将另一个字段存储在我的UserSessions数据库中以容纳UserID或类似的东西会更好吗?
**编辑***
我试图显示所有当前登录用户的用户名(已在站点上注册并登录).
解决方法:
我建议您在会话表中添加一列,该列在会话数据之外单独存储用户ID.这样你就可以使用SQL来获取这样的名字. (使用假设的用户表)
SELECT UserTable.userName FROM SessionData
INNER JOIN UserTable
ON SessionData.userId = UserTable.id
假设您在预定的一段时间后使用另一个查询来清除旧会话,此查询将返回每个登录用户的当前会话数据以及包含其用户名的用户表中的用户行.
$_SESSION数组应仅用于存储与用户当前会话相关的信息,而不是用于存储站点周围的其他会话.
内容总结
以上是互联网集市为您收集整理的php – 使用$_SESSION超全局获取当前在线用户并将其重新设置回当前会话数据是否很难?全部内容,希望文章能够帮你解决php – 使用$_SESSION超全局获取当前在线用户并将其重新设置回当前会话数据是否很难?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。