使用PHP从MYSQL获取0或1值

使用PHP从MYSQL获取0或1值,php,mysql,Php,Mysql,我试着用这段代码来检查一个用户是否被验证,如果他们没有被验证,则重定向他们。我有麻烦的结果,因为它不断重定向我,无论我是否验证。代码如下: <?php if(loggedin()){ $check_active_sql = mysql_query("SELECT * FROM members WHERE username = '$username'") or die(mysql_error()); while ($check_active_res = mysql_

我试着用这段代码来检查一个用户是否被验证,如果他们没有被验证,则重定向他们。我有麻烦的结果,因为它不断重定向我,无论我是否验证。代码如下:

<?php
    if(loggedin()){ 
    $check_active_sql = mysql_query("SELECT * FROM members WHERE username = '$username'") or die(mysql_error());
    while ($check_active_res = mysql_fetch_array($check_active_sql)) {
        $active = $check_active_res['active'];
            if($active == "0"){
                header("Location: login.php?verify=true");
            }
            else
            {
            }
        }
    };
?>
尝试使用empty()作为:

而不是

     if($active == "0"){}
-确定变量是否为空


换句话说,如果变量是空字符串、false、array()、NULL、“0”、0和未设置的变量,它将返回true。

我假设用户登录后,您将数据库中的字段设置为1 为什么不使用会话而不是使用这种方式

只要您登录一个用户就输入以下代码

session_start();
$_SESSION['logged_in'] = 1;
现在,要检查用户是否登录,只需添加此函数

function check_login() {
if($_SESSION['logged_in'] == 1){
return true;
} else {
return false;
}
然后,如果你想重定向他,只需执行以下操作

if(!check_login()) {
header('location: http://website.com');
}

请解释一下原因好吗?不,这不起作用。虽然你的解释对记录的行为有效,但你没有给OP任何线索,因为这会解决他的问题。没关系,我理解这是怎么回事,但我的数据库实际上默认为数据库中的数字0,经验证后变为1-我想我必须摆脱它0值中的
empty
==false
相同。除非您不知道正在测试的变量是否存在,否则不要使用
empty
。很难知道问题出在哪里。请按照您的变量在不同点的常规调试过程,并向我们提供结果。您可以这样做请自己解决这个问题,否则您会给我们更多的信息来帮助您。@user2152265我已经更新了我的答案,请仔细检查,在这种情况下$active与成员是否通过电子邮件验证了他们的帐户有关,因此在这种情况下会话将不起作用-但是,如果我决定记录有问题的成员,我肯定会使用这个代码示例e在线,谢谢。你知道有什么方法可以确保会员明确验证他们的帐户吗?
if(!check_login()) {
header('location: http://website.com');
}