2013-03-16 64 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