Apa cara terbaik untuk memeriksa apakah formulir telah dikirimkan atau tidak untuk menentukan apakah saya harus meneruskan variabel formulir ke kelas validasi saya?
Pertama saya pikir mungkin:
isset($_POST)
Tapi itu akan selalu kembali benar karena superglobal didefinisikan di mana-mana. Saya tidak ingin mengulang setiap elemen formulir saya dengan:
if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
Saat menulis pertanyaan ini, saya memikirkan solusi yang jauh lebih mendasar, tambahkan bidang tersembunyi untuk bertindak sebagai bendera yang dapat saya periksa.
Apakah ada cara yang 'lebih bersih' untuk melakukannya selain menambahkan bendera saya sendiri?
php
forms
validation
Anonim
sumber
sumber
submited
dan kemudian menggunakan phpif(isset($_POST['submited']))
atau input tersembunyi ...Jawaban:
Untuk pemeriksaan umum apakah ada
POST
penggunaan tindakan:EDIT : Seperti yang dinyatakan dalam komentar, metode ini tidak akan berfungsi untuk beberapa kasus (misalnya dengan kotak centang dan tombol tanpa nama). Anda benar-benar harus menggunakan:
sumber
Bagaimana tentang
sumber
Sebenarnya, tombol kirim sudah menjalankan fungsi ini.
Coba dalam FORMULIR:
Kemudian di handler PHP:
sumber
if (null !== (filter_input(INPUT_POST, 'macaddress'))){
yang membuat Anda terbiasa menggunakan filter_inputMenggunakan
sumber
if ($_SERVER['REQUEST_METHOD'] == 'POST')
.sumber
Coba ini
sumber
Pada catatan yang berbeda, selalu merupakan praktik yang baik untuk menambahkan token ke formulir Anda dan memverifikasinya untuk memeriksa apakah data tidak dikirim dari luar. Berikut langkah-langkahnya:
Hasilkan token unik (Anda dapat menggunakan hash) Contoh:
Tetapkan token ini ke variabel sesi. Ex:
Tambahkan masukan tersembunyi untuk mengirimkan token. Ex:
kemudian sebagai bagian dari validasi Anda, periksa apakah token yang dikirimkan cocok dengan sesi var.
sumber
Saya memiliki masalah yang sama - pastikan juga Anda menambahkan
name=""
tombol input. Nah, perbaikan itu berhasil untuk saya.sumber
Anda juga bisa menggunakan:
sumber
is_array($_POST)
selalu memberikan true (di mesin saya). Menurut stackoverflow.com/questions/5594020/php-check-if-post-is-array :$_POST is a superglobal array which is always defined
,unless somewhere in your code you either unset or overwrite $_POST somehow
, sehingga tampaknya diharapkan bahwa ini selalu mengembalikan benar ..is_array($_POST)
jelas bukan cara untuk memeriksa apakah formulir telah dikirim.