2012-04-29 85 views
0

嘗試在php上驗證用戶登錄。即使我使用正確的信息,我也只是被髮送到'index2.php'。任何想法我應該如何調試這個或我需要做什麼? 感謝sql/php - 驗證用戶登錄

**我也改變了查詢,SELECT COUNT(ID)FROM CUSTOMER

,如果語句設置, 「如果($結果> 1){」

但還是得到了發送到'index2.php'

<?php 

// ---------------------- 
// Retrieve login information 

    include("db_info.php"); 

// ---------------------- 
// Connect to database 

$conn = oci_connect($db_user, $db_pwd, '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=*****.edu)(Port=1521)))(CONNECT_DATA=(SID=asuka)))'); 

if (!$conn) { 
$e = oci_error(); 
print_r($e); 
exit(); 
} 

// ---------------------- 
// Authenticate User 

// Create query 
$sql = "SELECT COUNT(ID) FROM CUSTOMER WHERE EMAIL='$email' AND PASSWORD='$password'"; 

// Create database query statement 
$statement_id = oci_parse($conn, $sql); 

// Execute query statement 
$result = oci_execute($statement_id, OCI_COMMIT_ON_SUCCESS); 

// Check for successful authentication 
if ($result==1) { 
    if ($email=="[email protected]") { 
     $db_login_status = 2; 
     header("location: index1.php"); 
    } else { 
     $db_login_status = 1; 
     header("location: index.php"); 
    } 
} else { 
    header("location: index2.php"); 
} 

// ---------------------- 
// Close connections 

oci_free_statement($statement_id); 
oci_close($conn); 
+1

請停止使用古老的'mysql_ *'函數編寫新代碼。他們不再保持和社區已經開始了[棄用過程(http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –

+0

您是否以明文存儲用戶密碼? [這是一個壞主意](http://stackoverflow.com/questions/1581610/how-can-i-store-my-users-passwords-safely)。 *編輯*:在檢查之前,你實際上沒有給'$ result'賦值? – DCoder

+0

您在查詢中使用了Oracle擴展(oci),然後您想使用mysql_error()獲得錯誤! –

回答

0

這裏有幾個問題。首先,我們有if($ email =「[email protected]」)。那應該是a)是b)後面有大括號。另一個問題是,在更改http位置標題之前,您無法輸出文本,因此應該刪除回顯語句。第三個問題是,在進行管理檢查轉發到index1.php之前,您將重定向到index.php。

+0

謝謝,我更新了所有內容。我現在每次都會發送到「index.php」。有任何想法嗎? – Meowbits