首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP未设置未知会话id

PHP未设置未知会话id
EN

Stack Overflow用户
提问于 2015-01-15 13:46:08
回答 5查看 111关注 0票数 0

我有一个用PHP编写的登录系统。当您成功登录;

代码语言:javascript
复制
<?php $_SESSION[session_id()] = "yourMemberIDHere"; ?>

当你注销的时候;

代码语言:javascript
复制
<?php unset($_SESSION[session_id()]); ?>

这是我的问题。管理员可以禁止会员。被禁止的会员不能登录。但是,当一个成员在网上被禁止时,它不会注销。因为我只在登录时控制禁止状态。

所以我知道在$_SESSION[]数组的某个地方,值等于"myBannedMemberID“。我如何找到那个$_SESSION密钥并取消它?

我以为预言是有用的。但是,如果我的系统上有成千上万的成员在线呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-01-15 13:54:22

尝试使用php函数array_search

代码语言:javascript
复制
$key = array_search($myBannedMemberID, $_SESSION);
unset($_SESSION[$key]);

文档:http://php.net/manual/en/function.array-search.php

票数 0
EN

Stack Overflow用户

发布于 2015-01-15 14:05:41

您可以在所有会话中搜索:

代码语言:javascript
复制
foreach ($_SESSION as $name => $value) {
    if ($value == 'myBannedMemberID') {
       unset($_SESSION[$name]);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2015-01-15 13:51:25

试着做这样的事情:

代码语言:javascript
复制
<?php
if(isset($_SESSION['myBannedMemberID'])){
    unset ($_SESSION['myBannedMemberID']);
}
?>

您也可以通过如下方式打印$_SESSION数组中的所有项:

代码语言:javascript
复制
 print_r($_SESSION);

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27964845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档