2013-03-15 85 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注入。