Setelah menguasai CRUD, langkah selanjutnya adalah mengamankan input pengguna.
Form adalah titik masuk data dari user ke aplikasi. Tanpa validasi dan sanitasi, aplikasi rentan terhadap:
- Input kosong atau tidak sesuai format
- SQL Injection
- XSS (Cross-Site Scripting)
Pada BAB ini, kita akan membahas:
- Membuat form input
- Mengambil data POST
- Validasi form
- Menampilkan pesan error
- Sanitasi data
Contents
Tujuan Pembelajaran
Setelah menyelesaikan BAB 9, Anda akan mampu:
- Membuat form input data di CodeIgniter
- Mengambil data POST dengan aman
- Melakukan validasi form sebelum disimpan
- Menampilkan pesan error ke user
- Menyaring data agar aman (sanitasi)
9.1 Membuat Form Input
CI 3
Controller:
class Mahasiswa extends CI_Controller {
public function tambah() {
$this->load->view('mahasiswa_form');
}
}
View mahasiswa_form.php:
<h2>Tambah Mahasiswa</h2>
<form method="post" action="<?= base_url('mahasiswa/simpan') ?>">
<label>Nama:</label><br>
<input type="text" name="nama"><br>
<label>NIM:</label><br>
<input type="text" name="nim"><br>
<label>Jurusan:</label><br>
<input type="text" name="jurusan"><br><br>
<button type="submit">Simpan</button>
</form>
CI 4
View sama, tinggal menyesuaikan URL action:
<form method="post" action="<?= base_url('mahasiswa/simpan') ?>">
9.2 Mengambil Data POST
CI 3
$nama = $this->input->post('nama', TRUE); // TRUE = XSS filter
$nim = $this->input->post('nim', TRUE);
$jurusan = $this->input->post('jurusan', TRUE);
CI 4
$nama = $this->request->getPost('nama', FILTER_SANITIZE_STRING);
$nim = $this->request->getPost('nim', FILTER_SANITIZE_STRING);
$jurusan = $this->request->getPost('jurusan', FILTER_SANITIZE_STRING);
📌 Tips:
- Selalu gunakan sanitasi agar data aman dari script berbahaya
9.3 Validasi Form
CI 3
$this->load->library('form_validation');
$this->form_validation->set_rules('nama', 'Nama', 'required|min_length[3]');
$this->form_validation->set_rules('nim', 'NIM', 'required|numeric');
$this->form_validation->set_rules('jurusan', 'Jurusan', 'required');
if($this->form_validation->run() == FALSE) {
$this->load->view('mahasiswa_form');
} else {
// Simpan data
}
CI 4
$validation = \Config\Services::validation();
$validation->setRules([
'nama' => 'required|min_length[3]',
'nim' => 'required|numeric',
'jurusan' => 'required'
]);
if(!$validation->withRequest($this->request)->run()) {
return view('mahasiswa_form', [
'validation' => $validation
]);
} else {
// Simpan data
}
📌 Catatan:
- Validasi mencegah input kosong, terlalu pendek, atau salah format
- Bisa menambahkan validasi email, URL, atau custom regex
9.4 Menampilkan Pesan Error
CI 3
<?php echo validation_errors(); ?>
CI 4
<?php if(isset($validation)): ?>
<div style="color:red;">
<?= $validation->listErrors() ?>
</div>
<?php endif; ?>
📌 Tips:
- Tampilkan error di atas form
- Bantu user memahami kesalahan input
9.5 Sanitasi Data
Sanitasi data penting agar aplikasi aman dari serangan XSS dan SQL Injection.
Contoh Sanitasi
- CI 3 →
$this->input->post('nama', TRUE) - CI 4 →
$this->request->getPost('nama', FILTER_SANITIZE_STRING)
Selain itu:
- Gunakan Query Builder agar query aman
- Jangan masukkan input langsung ke HTML tanpa escape
Penutup
Dengan BAB 9 ini, aplikasi Anda sudah mampu:
- Mengambil input user dengan aman
- Melakukan validasi form agar data sesuai aturan
- Menampilkan pesan error yang jelas
- Menyaring data agar tidak berbahaya
Langkah selanjutnya adalah membuat CRUD dengan validasi dan form lengkap, sehingga aplikasi siap digunakan secara profesional dan aman.