Memahami Gelagat "isset $_POST" untuk Pengesahan Input Borang
Apabila menggunakan borang dalam pembangunan web, adalah penting untuk mengesahkan input pengguna untuk memastikan integriti data. Satu senario biasa ialah menyemak sama ada medan input, seperti alamat e-mel, diisi sebelum meneruskan lebih lanjut.
Dalam senario yang diberikan, pembangun menghadapi isu di mana mekanisme pengesahan sentiasa mengembalikan "Ya, mel adalah set" walaupun apabila pengguna menyerahkan borang kosong. Untuk memahami mengapa ini berlaku, mari kita mendalami kelakuan isset($_POST["mel"]).
Apakah yang isset($_POST["mel"]) lakukan?
Fungsi isset() dalam PHP menyemak sama ada pembolehubah yang ditentukan ditetapkan, bermakna ia telah diberikan nilai, walaupun nilai itu kosong. Dalam kes penyerahan borang, $_POST["mel"] mewakili nilai yang dimasukkan ke dalam medan input bernama "mel."
Mengapa ia sentiasa ditetapkan?
Kebanyakan input borang, termasuk medan input teks, sentiasa ditetapkan, tidak kira sama ada ia kosong atau tidak. Ini kerana apabila borang diserahkan, semua inputnya, malah yang kosong, dimasukkan ke dalam tatasusunan superglobal $_POST.
Membetulkan Pengesahan
Untuk mengesahkan dengan tepat jika input kosong, anda harus menggunakan operator !empty(). Operator !empty() mengembalikan benar jika pembolehubah tidak kosong, termasuk kedua-dua rentetan bukan kosong dan nombor bukan sifar.
Oleh itu, kod pengesahan yang diubah suai ialah:
if (!empty($_POST["mail"])) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }
Pembetulan ini memastikan bahawa mesej "Mel ditetapkan" hanya dipaparkan apabila medan input mengandungi nilai bukan kosong.
Atas ialah kandungan terperinci Mengapakah `isset($_POST['mel'])` Sentiasa Kembali Benar Walaupun Dengan Input Borang Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!