PHP Undefined Index with $_POST [重複]
在PHP 中,存取未設定的陣列元素會觸發執行階段錯誤,導致“未定義索引”通知。在測試表單中的空變數(例如使用者登入腳本)時,通常會發生這種情況。
您的簡化程式碼示範了該問題:
$user = $_POST["username"];
if($user != null)
{
echo $user;
echo " is your username";
}
else
{
echo "no username supplied";
}
雖然當存在使用者名稱時程式碼可以按預期工作,但當沒有提供使用者名稱時,它會失敗並顯示錯誤「未定義索引:使用者名稱」。發生這種情況是因為在未提交資料時 $_POST 沒有「使用者名稱」鍵。
要解決此問題,請在存取變數或陣列元素之前使用 isset() 運算子檢查其是否存在。這樣,在嘗試檢索值之前就可以防止錯誤。
if (isset($_POST["username"]))
{
$user = $_POST["username"];
echo "$user is your username";
}
else
{
$user = null;
echo "no username supplied";
}
在此更新的程式碼中,isset() 在將其值指派給 $user 之前確保 $_POST 中存在「username」鍵。這消除了運行時錯誤,並允許您正確處理空用戶名的情況。
值得注意的是,缺少陣列元素是輕微的運行時錯誤(E_NOTICE 等級)。忽略通知可以讓您的程式碼按預期執行,但這被認為是不好的做法,特別是在生產環境中。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3