1 Pemrograman Web 115 BAB 8 FORM HANDLING DAN VALIDASI Suatu aplikasi banyak menerima masukan/input data dari pengguna, misalkan ketika registrasi kes...
BAB 8 FORM HANDLING DAN VALIDASI Suatu aplikasi banyak menerima masukan/input data dari pengguna, misalkan ketika registrasi kesuatu website atau ketika login pada halaman email dan sebagainya. Untuk memungkinkan hal tersebut diperlukan suatu antarmuka pada klien dalam bentuk form HTML dan suatu mekanisme untuk penanganan data yang dikirim oleh pengguna pada sisi server. Form handling ialah suatu mekanisme untuk menangani suatu masukan dari form yang dikirim oleh pengguna. Form handling berhubungan dengan metode yang dikirim dan bagaimana menangani pengiriman data berdasarkan metode yang digunakan. Pada bab ini akan membahas mengenai form HTML dan elemennya beserta implementasinya, juga form handling baik data teks maupun file.
8.1 Prosedur 1. Buka aplikasi XAMPP 2. Jalankan Apache dengan mengklik tombol start dan pastikan Apache berjalan dengan memperhatikan indikator warna background tulisan Apache menjadi hijau.
3. Buatlah direktori dan beri nama sesuai dengan nama anda, contoh rofil , kemudian didalam direktori tersebut buatlah direktori modul-8
4. Direktori modul-8 tempat meletakan file-file program pada buku ini
8.2 Form Dalam aplikasi web adakalanya kita memerlukan inputan atau masukan dari pengguna. Untuk melakukan hal itu kita dapat memanfaatkan form HTML. Form HTML terdiri dari tag-tag seperti
3) Buka web browser dan jalankan latihan-2.php, maka luarannya seperti ditunjukan pada Gambar 8.1
Gambar 8.1 Luaran Contoh Form Elemen Teks
b. Pilihan (Checkbox, Radio dan Dropdown)
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
120
Suatu masukan dapat berupa pilihan, baik pilihan tunggan ataupun pilihan jamak (multiple choice). Selain itu terdapat juga dropdown yang digunakan untuk pilihan baik difungsikan menjadi pilihan tunggal ataupun pilihan jamak. Berikut ialah beberapa atribut dasar dari checkbox dan radio button:
Tabel 8.3 Atribut Pada checkbox dan radio button Atribut
Penjelasan
Contoh
name
Merupakan nama dari masukan Nilai dari elemen form yang dikirim untuk diproses
name="username"
value checked
Digunakan untuk pemilihan
value="rasmus" checked=true atau hanya checked saja
Contoh: 1.
2. Jenis Kelamin: 3. Pria 4. Wanita 5. Syarat-Syarat: 6. KTP 7. SKCK 8. Bebas Narkoba 9. Data Saya Telah Benar 10. 11.
Kode 8.1 Elemen form radio dan checkbox
Menghasilkan sebagai berikut:
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
121
Gambar 8.2 Contoh luaran untuk elemen form radio dan chexbox
Untuk mengerti mengenai ini masukan berupa teks ikuti langkah berikut: 1) Buat file baru dan simpan dengan nama latihan-3.php pada direktori yang telah ditentukan. 2) Pada latihan-3.php, ketikan kode sesuai dengan Kode 8.1. 3) Buka web browser dan jalankan latihan-3.php, maka luarannya seperti ditunjukan pada Gambar 8.2
Elemen form lain yang berkaitan dengan pemilihan ialah dropdown. Berbeda dengan radio button ataupun checkbox, dimana semua pilihan ditampilkan pada layar, elemen form ini menampilkan elemen dalam pilihan dropdown. Element ini dapat digunakan baik untuk pemilihan yang bersifat single choice ataupun multiple choices dengan cara memberikan atribut multiple pada tag <select>. Berikut ialah atribut dasar dari elemen dropdown:
Tabel 8.4 Atribut pada dropdown tag <select> dan tag
Kode 8.2 Elemen form dropdown untuk single choice dan multiple choices
Sehingga menjadi sebagai berikut:
Gambar 8.3 Contoh luaran untuk form elemen dropdown pada single choice dan multiple choices
Untuk mengerti mengenai ini masukan berupa teks ikuti langkah berikut:
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
123
1) Buat file baru dan simpan dengan nama latihan-4.php pada direktori yang telah ditentukan. 2) Pada latihan-4.php, ketikan kode sesuai dengan Kode 8.2. 3) Buka web browser dan jalankan latihan-4.php, maka luarannya seperti ditunjukan pada Gambar 8.3
c. Elemen Hidden Kadang kita ingin mengirimkan suatu masukan secara tersembunyi, misalkan token untuk tambahan keamanan, ataupun berupa tanggal kapan suatu form dikirim. Untuk keperluan ini kita dapat memanfaatkan elemen Form hidden. Elemen form ini memiliki format yang sangat sederhana yakni: 1.
Dimana atribut yang ada hanya type dan value. Atribut type diisi dengan hidden dan value diisi dengan data yang dikirim secara tersembunyi. Berikut ialah contohnya:
1) Buatlah file baru dan simpan dengan nama latihan-5.php pada direktori yang telah ditentukan. 2) Ketikan kode sebagai berikut: 1. 2. 3. 4.
"> Nama 5.
3) Buka web browser dan jalankan latihan-5.php. Jika tidak ada kesalahan maka akan tampil sebagai berikut:
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
124
4) Jika dilihat pada tampilan diatas data tanggal tidak tampak pada layar web browser. Namun, jika kita melihat source code di google chrome dengan klik kanan view page source maka akan terlihat bahwa data tersebut terlihat seperti gambar berikut:
d. Tombol/Button (SUBMIT dan RESET) Pada form-form yang telah dibuat sebelumnya Anda menemukan pada bagian akhir terdapat button/tombol yang digunakan untuk mengirim data. Tombol tersebut disebut dengan tombol submit yang ditandai dengan atribut type="submit". Pada form HTML terdapat dua jenis tombol/button yakni: 1) Tombol submit, digunakan sebagai trigger pengiriman data 2) Tombol reset, digunakan untuk mengatur masukan kembali kenilai asalnya. Kedua tipe tombol tersebut memiliki tiga atribut penting seperti pada tabel berikut:
Tabel 8.5 Atribut Button Atribut
Penjelasan
Contoh
name type
Merupakan nama dari masukan Merupakan tipe elemen Nilai dari elemen form yang dikirim untuk diproses
name="username" Type= reset atau type= submit
value
value="ramus"
Untuk lebih memahami konsep dan fungsi tombol pada form HTML ikuti langkah berikut: 1) Buat file baru dan simpan dengan nama latihan-6.php pada direktori yang telah ditentukan. 2) Kemudian, ketikan kode form HTML berikut:
3) Buka web browser dan jalan kode tersebut. Jika tidak ada kesalahan maka akan menampilkan sebagai berikut:
4) Coba ubah data, misalkan sebagia berikut:
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
126
5) Jika anda klik tombol Reset maka data pada form masukan akan kembali kebentuk awal seperti gambar pada langkah ke-3
8.4 Contoh Form a. Form Biodata b. c.
Form 2 Form Login
Disuatu website umumnya terdapat form yang digunakan untuk proses otentikasi atau disebut dengan form login. Form ini umumnya terdiri dari masukan berupa username dan password. Berikut ialah langkah-langkah membuat form login: 1. Buatlah file baru dan simpan dengan nama form-login.php 2. Kemudian, ketikan kode berikut: 1. 2. 3. 4.
Username Password 5.
3. Buka web browser dan arahkan pada form-login tersebut. Jika tidak ada kesalahan maka luarannya seperti berikut:
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
127
4. Klik tombol Login, maka data akan dikirim ke proses.php yang telah dibuat sebelumnya dan menampilkan data yang telah dimasukan.
8.5 Form Handling Form handling fokus pada penanganan data yang telah dikirim dengan menggunakan form. Penanganan form lebih kepada mengambil data-data yang dikirimkan. Pengambilan data yang dikirim bergantung pada metode yang digunakan. Terdapat dua metode yang sering digunakan yakni GET dan POST.
Tabel 8.6 Perbandingan metode GET dan POST GET Bookmarked Cached
Dapat di bookmark Dapat di-cached
Encoding type
application/x-wwwformurlencoded
History
Ukuran data Batasan Tipe Data
Parameter masih tertinggal/tersimpan pada histori Meletakan data pada URL, sedangkan data yang dikirim melalui URL terbatas (Maksimum 2KB) Hanya Karakter ASCII
POST Tidak dapat di-bookmark Tidak dapat di-cached application/x-www-form-urlencoded atau multipart/form-data. Encoding multipart digunakan untuk mengirim file binary Tidak tersimpan pada histori
Tidak ada batasan
Tidak ada batasan termasuk file
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
128
GET kurang aman karena data dikirim bagian dari URL dan terdapat pada histori Data terlihat karena terdapat pada URL
Security Visibility
Lebih aman dari GET, karena data tidak terdapat pada URL, data histori dan cached Data tidak tampak pada URL
1) Buat file baru dan simpan dengan nama form-biodata.php pada diretkori yang telah ditentukan. 2) Kemudian, ketikan kode berikut:
Nama Telpon Kelamin Pria 6. Wanita 7. Deskripsi diri: 8. 9.
1. 2. 3. 4. 5.
Perhatikan: pada baris ke-1 method yang digunakan ialah metode POST 3) Buat file baru lagi dan simpan dengan nama proses-biodata.php pada direktori yang telah ditentukan 4) Kemudian pada proses-biodata.php ketikan kode berikut 1. 2. 3. 4. 5.
Perhatikan: pada langkah ke-2 metode yang digunakan ialah POST, sehingga untuk mengambil datanya harus juga via post melalui GLOBAL VARIABEL $_POST, seperti pada baris ke-2, ke-3, ke-4 dan ke-5. 5) Buka web browser dan arahkan pada file form-biodata tersebut. 6) Isi masukan dan tekan tombol kirim dan perhatikan luarannya.
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
129
8.6 Handling File Upload Handling file upload sedikit berbeda dengan handling pada data teks. Hal ini karena melibatkan beberapa proses, yakni mengambil data file dan memindahkannya pada direktori yang telah ditentukan. Upload file, memerlukan encoding yang berbeda yakni multipart/formdata yang harus didefinisikan pada atribut enctype pada tag
dengan format berikut:
File // ELEMEN FORM YANG LAIN
1. 2. 3. 4.
Sedangkan untuk mengambil file yang telah diunggan dengan menggunakan variabel global $_FILES, dimana memiliki beberapa index/kunci 1. $_FILES['NAMA_FILE_UPLOAD']['tmp_name'] merupakan file upload 2. $_FILES['NAMA_FILE_UPLOAD']['name'] merupakan nama file yang diupload
Handling form upload ialah dengan memindahkan file yang telah diunggah kedirektori yang telah dispesifikasikan dengan menggunakan perintah move_uploaded_file(FILE, LOKASI TUJUAN) atau move_uploaded_file($_FILES['NAMA_FILE_UPLOAD']['tmp_name'], $_FILES['NAMA_FILE_UPLOAD']['name']).
1.
Buatlah direktori dengan nama upload
2.
Buat dua file kosong dan simpan file pada direktori yang ditentukan pada direktori htdocs dengan nama form-upload.php dan proses-upload.php.
3.
Ketikan dan simpan kode berikut pada form-upload.php
2. Gambar 3. 4.
4. Ketikan dan simpan kode berikut pada proses-upload.php: 1.
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
130
1. 5. 5.
Buka web browser dan arahkan pada form-upload.php, maka akan menampilkan tampilan web sebagai berikut
Setelah mengklik tombol Choose File maka akan keluar window untuk memilih file yang akan diunggah seperti gambar berikut
6.
Klik tombol Choose File dan pilih file yang akan di-upload. Kemudian klik tombol Simpan untuk memproses upload.
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
7.
131
Jika berhasil maka akan menampilkan pesan sebagai berikut:
8.7 Validasi Data Validasi data ialah suatu proses untuk mengecek apakah suatu data yang dikirim via form HTML sesuai dengan spesifikasi yang telah ditentukan. Spesifikasi yang dimaksud misalkan apakah suatu inputan memiliki nilai, atau sesuai dengan format yang telah ditentukan. Untuk mendefinisikan spesifikasi dari suatu inputan dapat dicek dengan percabangan.
Beberapa hal yang bisa divalidasi : 1. Nilai kosong 2. Nilai berupa angka 3. Minumum angka atau maksimum angkan dan Rentang angka tertentu 4. Kesesuaian antar masukan 5. Panjang karakter 6. File, Ukuran File, Tipe File
Berikut ialah contoh form dengan spesifikasi form memiliki masukan berupa a. Nama, harus diisi b. Foto, harus diisi c. Alamat, harus diisi d. Jenis kelamin, harus diisi e. Umur, harus diisi dan harus angka serta lebih dari 17 tahun f.
Username, harus diisi dan panjangnya minimal 7 karakter
g. Password, harus diisi dan panjangnya minimal 7 karakter h. Retype Password, harus diisi dan harus sama dengan Password
Rofilde Hasudungan, S. Kom., M. Sc
Pemrograman Web
132
Untuk melakukan validasi dari form seperti spesifikasi diatas, ikuti langkah berikut: 1) Buatlah file baru dan simpan dengan nama form-registrasi.php pada direktori yang telah ditentukan. 2) Kemudian, ketikan kode berikut: 1. 2. 3. 4. 5.
3) Buat file baru untuk handling form diatas dan simpan nama proses-registrasi.php pada direktori yang telah ditentukan. 4) Kemudian, ketikan kode berikut: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
$errors[] = "Jenis Kelamin Harus Dipilih"; } if(is_numeric($umur) && $umur > 17) { $errors[] = "Umur Harus Angka dan Harus lebih dari 17 Tahun"; } if(strlen($username) >=7) { $errors[] = "Username Harus Lebih dari 7 Karakter"; } if(strlen($password) >=7) { $errors[] = "Password Harus Lebih dari 7 Karakter"; } if($ulangi_password != $password) { $errors[] = "Password dan Retype Password Harus Sama"; } if(count($errors) > 0){ // JIKA ADA ERRORS foreach($errors as $error) { echo "