Saya memiliki formulir di satu halaman yang dikirimkan ke halaman lain. Di sana, ia memeriksa apakah surat masukan sudah diisi. Jika demikian, lakukan sesuatu dan jika tidak diisi, lakukan sesuatu yang lain. Saya tidak mengerti mengapa selalu dikatakan sudah diatur, bahkan jika saya mengirim formulir kosong. Apa yang hilang atau salah?
step2.php:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
step2_check:
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
Jawaban:
Sebagian besar masukan formulir selalu disetel, meskipun tidak diisi, jadi Anda juga harus memeriksa kekosongannya.
Karena
!empty()
sudah memeriksa keduanya, Anda dapat menggunakan ini:sumber
!
operator dalam kasus seperti ini (lebih mudah dibaca, lebih sedikit kemungkinan kesalahan, dll.) Dan membalikkan logika ...if (empty()) {/* No */} else {/* Yes */}
Gunakan
!empty
sebagai gantiisset
. isset mengembalikan nilai true$_POST
karena$_POST
array adalah superglobal dan selalu ada (set).Atau gunakan lebih baik
$_SERVER['REQUEST_METHOD'] == 'POST'
sumber
isset
dan!empty
untuk mencegah kesalahan. EDIT: Ups, ternyata Belajar setiap hari kemudian Ref$_SERVER['REQUEST_METHOD']
memastikan pengguna telah mengirimkan formulir.$_POST
bisa kosong bahkan dalam kasus ini. Pertimbangkan formulir ini<form method="post"></form>
:, mengirimkannya tidak akan mengirimkan apa pun ke tindakan, tetapi jenis permintaan akanpost
. Atau dapat dilakukan dengan ikal:curl -X POST http://example.com/processor.php
. Jika prosesor berisi kode sepertiecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, Anda akan melihatPOST true
Dari php.net , isset
ruang kosong dianggap sebagai set. Anda perlu menggunakan empty () untuk memeriksa semua opsi null.
sumber
Jika Anda mengirim formulir kosong, $ _POST ['mail'] akan tetap dikirim, tetapi nilainya kosong. Untuk memeriksa apakah bidang tersebut kosong, Anda perlu memeriksa
sumber
Menambahkan atribut berikut ke bentuk input teks:
required="required"
. Jika formulir tidak diisi, pengguna tidak dapat mengirimkan formulir.Kode baru Anda adalah:
sumber
Anda cukup menggunakan:
Cara lainnya, gunakan empty ()
sumber
@
, yaitu:@$_POST['username']
. Terima kasih telah memperhatikannya.Gunakan
!empty()
sebagai gantiisset()
. Karenaisset()
akan selalu mengembalikan true dalam kasus Anda.sumber
Mungkin Anda bisa mencoba yang ini:
sumber
sumber
Mari Pikirkan ini adalah Formulir HTML Anda di step2.php
Saya pikir Anda membutuhkannya untuk database Anda, sehingga Anda dapat menetapkan Nilai Formulir HTML Anda ke Variabel php, sekarang Anda dapat menggunakan String Escape Nyata dan di bawah ini harus menjadi milik Anda
Di mana $ db adalah Koneksi Database Anda.
sumber
Periksa untuk melihat apakah FORM telah dikirimkan terlebih dahulu, kemudian lapangan. Anda juga harus membersihkan lapangan untuk mencegah peretas.
step2_check:
sumber
Untuk menjawab pertanyaan yang diposting: isset dan empty together memberikan tiga kondisi. Ini dapat digunakan oleh Javascript dengan perintah ajax juga.
sumber
Anda bisa mencoba ini:
sumber
sumber
Anda dapat mencoba,
sumber