我今天发布了一个问题,因为我在登录时将数据放入数据库时遇到问题,因此我可以在我的网站中显示活跃用户。所以碰巧是一个“,”问题。但有人建议我在我的数据库中使用布尔值,如果用户没有登录名为'ifactive = 0'(deffault)的bool,那么当用户登录'ifactive = 1'时。所以我在登录时从0转换为1,并向您显示部分代码:
if(isset($_POST['submit']))
{
$uname = mysql_escape_string($_POST['uname']);
$pass = mysql_escape_string($_POST['pass']);
$pass = md5($pass);
$sql = mysql_query("SELECT * FROM `userinfo` WHERE `uname` = '$uname' AND `pass` =
'$pass'");
if(mysql_num_rows($sql) > 0) {
mysql_query("UPDATE `userinfo` SET `ifactive` = 1 WHERE `uname` = '$uname'")
or die(mysql_error());
session_start();
$_SESSION['uname'] = $uname;
if (isset($_SESSION['uname'])) {
header('Location: main.php');
}
这部分代码正常工作,将布尔值“ifactive”设置为1,(此代码位于名为login.php的文件中,登录后将其重定向到我的主页“main.php”。 “main.php”我已经放了一个Logout按钮,它链接到一个“logout.php”文件,在那里我结束当前的用户会话,我想把我的布尔“ifactive”重置为零:
session_start();
mysql_query("UPDATE `userinfo` SET `ifactive` = 0 WHERE `uname` = '$uname'") or
die(mysql_error());
mysql_close();
session_destroy();
header("Location: index.php ");
但要使这个mysql_query工作,我必须
include 'login.php';
这样我就可以使用变量了。但这是主要问题。当我包含这个login.php时,我想两个“更新”代码以某种方式进行斗争,而第二个代码如果你明白我的意思就不起作用。现在我正在阅读有关全局变量的内容,但我现在对它们感到困惑。我的意思是在Logout.php中使我的更新代码工作,我想我不必包含整个login.php,我想只包括变量:
$uname
以便可以识别
答案 0 :(得分:1)
将$ uname存储在$ _SESSION中。然后,您可以在查询中使用$_SESSION['uname']
:
session_start();
if(isset($_SESSION['uname'])) {
mysql_query("UPDATE `userinfo` SET `ifactive` = 0 WHERE `uname` = '$_SESSION['uname']'") or
die(mysql_error());
}
mysql_close();
session_destroy();
header("Location: index.php ");
此外,ifactive
是一个奇怪的列名。我会选择active
。把事情简单化。然后你的代码看起来像:
if($active) ...
而不是
if($ifactive) ...
这似乎让你有口吃。