在登录和注销时更改布尔值

时间:2014-02-27 13:50:43

标签: php

我今天发布了一个问题,因为我在登录时将数据放入数据库时​​遇到问题,因此我可以在我的网站中显示活跃用户。所以碰巧是一个“,”问题。但有人建议我在我的数据库中使用布尔值,如果用户没有登录名为'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

以便可以识别

1 个答案:

答案 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) ...

这似乎让你有口吃。