在 PHP 註冊頁面中,三個輸入框(郵箱、密碼、昵稱)均為空時,點擊提交按鈕,資料庫仍會寫入一行全為空值的記錄。這顯然違背了預期的驗證邏輯。
以下是關鍵的判斷邏輯片段:
<?php
if ( isset($_POST["submit"]) && $emailErr="ok" && $passErr = "ok" && $nicknameErr = "ok" ) {
// 連接資料庫並執行 INSERT 語句
// ...
}
?>
條件判斷中使用了 賦值運算子 (=) 而非 比較運算子 (== 或 ===)。
具體來說:$emailErr="ok"、$passErr = "ok"、$nicknameErr = "ok" 都是賦值操作,其返回值均為字符串 "ok",在布林上下文中為 true。因此整個 if 條件恆成立,導致即便驗證失敗(變量實際值為錯誤信息),程序仍會進入資料庫寫入邏輯。
應改用比較運算子:
<?php
if ( isset($_POST["submit"]) && $emailErr=="ok" && $passErr == "ok" && $nicknameErr == "ok" ) {
// 執行資料庫操作
}
?>
=== 進行嚴格比較,避免類型轉換導致的邏輯錯誤。$_POST 變量極不安全)。mysql_* 函數。