首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

PHP 登入驗證永遠成功?修正條件判斷邏輯錯誤

     編輯:程式設計疑難解答

問題描述

撰寫 PHP 登入功能時,無論輸入何種帳號密碼,系統皆顯示「登入成功」。資料庫連線正常,但驗證邏輯失效。

錯誤程式碼分析

// 錯誤寫法
if ($result = $check_query) {
    // 登入成功邏輯
}

此處使用了賦值運算子 = 而非比較運算子。$result = $check_query 會將查詢結果資源賦值給 $result,並回傳該資源。在 PHP 中,非空資源視為 true,導致條件永為真。

正確修正方式

// 修正 1:直接判斷查詢結果資源
if ($check_query) {
    // 登入成功
}

// 修正 2:檢查是否有資料列回傳 (mysqli 範例)
if (mysqli_num_rows($check_query) > 0) {
    // 登入成功
}

// 修正 3:PDO 範例
if ($stmt->rowCount() > 0) {
    // 登入成功
}

安全性補充建議

  • 務必使用預處理語句 防止 SQL 注入。
  • 密碼應使用 password_hash() 加密儲存,驗證時用 password_verify()。
  • 避免直接在 SQL 中拼接變數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved