2013-03-15 84 views
0

我正在尝试创建一个php scipt,用于检查成员是否在页面上登录时进行验证。如果他们不是,他们会重新启动登录并显示错误消息&说明。因此,在页面上我有这样的代码:PHP Select Value&Redirect With If语句

<?php 
    if (loggedin()) { 
     $check_active = "SELECT active FROM members WHERE username == '$username'"; 
     $active = mysql_query($check_active); 
     if ($active < 1) { 
      header("Location: login.php?verify=true"); 
     } else { 
      exit(); 
     } 
    } 
?> 

它是将用户重定向回到登录页面,但它这样做无论是活动的。活动成员的值为0(未验证)& 1(已验证)。我正在使用的脚本有问题吗?

谢谢

+0

您不是从查询结果中获取一行。 – jeroen 2013-03-15 20:40:15

+1

是否在这种情况下工作? – 2013-03-15 20:41:23

+1

$ active总是小于1,因为mysql_query返回的资源(非整数)的整数值始终为0.其次,从PHP 5.5开始不推荐使用mysql_函数,应该用odbc_connect,ADO或PDO对象连接替换。 – zgr024 2013-03-15 20:49:59

回答

3

你需要处理$active结果,并把它变成一个PHP变量/数组。 $active,因为它是在你的代码是一个简单的资源(见here)试试这个:

$active = mysql_query($check_active); // run query and return resource 

$row = mysql_fetch_assoc($active); // put resource data into php array 

if ($row['active'] < 1) { 
    header("Location: login.php?verify=true"); 
} else { 
    exit(); 
} 
0

您在查询后没有正确读取数据。

紧随你执行mysql_query函数。试试这个:

$output = mysql_fetch_assoc($active); 
$active_result = $ouput['active']; 

不知道它是否有效。

并为SQL注入增加一点安全性。 并且使用MySQLi,因为您并不热衷于自己防止SQL注入。