Logout.php
<?php
require('includes/database.php');
require('includes/initialize.php');
$username = $_SESSION['username'];
$onlineUsers = $odb->prepare("DELETE FROM `onlineUsers` WHERE `username`='$username'");
$onlineUsers -> execute();
sleep(1);
session_start();
unset($_SESSION['username']);
unset($_SESSION['ID']);
session_destroy();
header('location: index.php');
?>
onlineUsers Table
CREATE TABLE IF NOT EXISTS `onlineUsers` (
`username` varchar(15) NOT NULL,
`isStaff` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
如果您成功登录,它会将您添加到表中,我希望您在退出时将其从表中删除。注销工作正常,除了我需要帮助的部分(从在线用户中移除用户)
答案 0 :(得分:2)
我们应该在访问它之前正确启动会话,例如。 你的代码应该是这样的。
If ( !isset($_SESSION))
session_start();
$username = $_SESSION['username'];
答案 1 :(得分:1)
您是否在询问如何查询数据库以删除包含在线用户的行?您可能想要做的是:
DELETE FROM table WHERE username=something;
在这种情况下,您将传递要从数据库中删除的用户的用户名。
答案 2 :(得分:0)
你在一些代码之后开始了你的会话。你应该在你的PHP代码的开头就像这个
开始你的会话<?php
session_start();