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

PHP 表單提交時,輸入框為空仍寫入空白數據行的原因與解決

     編輯:程式設計綜合問答

問題現象

在 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" ) {
    // 執行資料庫操作
}
?>

補充建議

  • 使用 === 進行嚴格比較,避免類型轉換導致的邏輯錯誤。
  • 在資料庫操作前,應對所有用戶輸入進行嚴格驗證與過濾,防止 SQL 注入(示例代碼直接拼接 $_POST 變量極不安全)。
  • 建議採用 PDO 或 MySQLi 預處理語句替代已棄用的 mysql_* 函數。

錯誤示意圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved