2013-03-16 50 views
0

我试着用这个代码来检查用户是否已经过验证,如果他们没有进行重定向。无论我是否经过验证,我都对结果有任何疑问,因为它会继续重定向我。下面是代码:使用PHP从MYSQL获取0或1的值

<?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 
      { 
      } 
     } 
    }; 
?> 

感谢您使用空(

+3

很难知道问题出在哪里。请按照['var_dump'ing](http://www.php.net/manual/en/function.var-dump.php)的常规调试过程在不同的点进行变量并向我们提供结果。你要么自己解决问题,要么给我们更多的信息来帮助你。 – Adi 2013-03-16 09:27:37

+0

@ user2152265我已更新我的答案,请检查出 – sandip 2013-03-16 09:29:16

回答

0

试)为:

 if(empty($active) && $active!=1){ 
     header("Location: login.php?verify=true"); 
    }else{ 

    } 

,而不是

 if($active == "0"){} 

- 确定是否变量是空的

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

+0

请解释原因吗? – Adi 2013-03-16 09:23:39

+0

没有,也不工作 – user2152265 2013-03-16 09:25:13

+0

虽然你的解释是有效的记录['empty()'](http://php.net/manual/en/function.empty.php)的行为,你没有提供任何线索到OP为什么这将解决他的问题 – Adi 2013-03-16 09:29:06

1

我假设一旦用户登录,您将数据库中的字段设置为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'); 
} 
+0

对不起,在这种情况下$活动与天气有关,会员通过电子邮件验证了他们的帐户,所以会话在这种情况下不起作用 - 然而,如果我决定使用这个代码示例登录在线的会员,谢谢。你知道有什么方法可以确保会员明确验证其帐户吗? – user2152265 2013-03-16 14:50:57