Saat ini, internet telah menjadi bagian penting dari kehidupan kita, dan kita sering kali berinteraksi dengan formulir online untuk mendaftar, login, atau melakukan tindakan lainnya. Sayangnya, banyak robot atau program otomatis (bot) yang berusaha mengirimkan data palsu atau spam ke formulir tersebut.
Untuk mengatasi masalah ini dan meningkatkan keamanan, kita dapat menggunakan teknologi Captcha (Completely Automated Public Turing test to tell Computers and Humans Apart). Captcha adalah tes keamanan yang dirancang untuk membedakan antara manusia dan program komputer. Biasanya, Captcha berupa gambar dengan kode acak yang harus diisi oleh pengguna.
Membuat Captcha dengan PHP GD
Pada artikel ini, kita akan mempelajari cara membuat Captcha sederhana dengan menggunakan library GD (Graphics Drawing) pada PHP. GD adalah library grafis yang memungkinkan kita untuk membuat dan memanipulasi gambar dengan mudah.
Langkah-langkah untuk Membuat Captcha:
- Instal PHP dan Aktifkan Ekstensi GD
- Membuat Fungsi Captcha
- Menghasilkan Kode Acak dan Gambar Captcha
- Menampilkan Gambar Captcha pada Halaman
1. Instal PHP dan Aktifkan Ekstensi GD
Pastikan Anda memiliki instalasi PHP yang lengkap dan aktifkan ekstensi GD pada konfigurasi PHP Anda. GD biasanya sudah diaktifkan secara default pada kebanyakan instalasi PHP. Anda dapat memeriksa apakah GD sudah diaktifkan dengan membuat file phpinfo.php dengan konten berikut:
<?php phpinfo(); ?>
Buka file tersebut di browser Anda dan cari bagian yang menyatakan GD Support. Jika GD sudah diaktifkan, Anda akan melihat informasi terkait GD seperti GD Support: enabled.
2. Membuat Fungsi Captcha
Berikut adalah langkah-langkah untuk membuat fungsi Captcha di PHP:
<?php // Fungsi untuk membuat Captcha function createCaptcha($width, $height, $length = 6) { // Membuat kode acak untuk Captcha $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $captchaCode = ''; for ($i = 0; $i < $length; $i++) { $captchaCode .= $characters[rand(0, strlen($characters) - 1)]; } // Menyimpan kode Captcha dalam session session_start(); $_SESSION['captcha_code'] = $captchaCode; // Membuat gambar Captcha $image = imagecreatetruecolor($width, $height); $background = imagecolorallocate($image, 255, 255, 255); $textColor = imagecolorallocate($image, 0, 0, 0); // Menggambar kode Captcha pada gambar $font = 'path/to/your/font.ttf'; imagettftext($image, 20, 0, 10, 30, $textColor, $font, $captchaCode); // Mengganti header agar gambar ditampilkan sebagai gambar PNG header('Content-type: image/png'); // Menampilkan gambar Captcha imagepng($image); imagedestroy($image); } ?>
Penjelasan Kode
- Fungsi
createCaptcha()
menerima tiga parameter:$width
dan$height
untuk menentukan ukuran gambar Captcha, serta$length
yang merupakan panjang kode Captcha yang ingin kita hasilkan (default: 6 karakter). - Selanjutnya, kita membuat kode acak untuk Captcha dengan karakter yang terdiri dari angka dan huruf (huruf besar dan kecil). Kode Captcha ini kemudian disimpan dalam session untuk memverifikasinya nanti.
- Setelah itu, kita membuat gambar Captcha menggunakan fungsi
imagecreatetruecolor()
dari library GD. Latar belakang gambar diatur menjadi putih dan teksnya menggunakan warna hitam. - Kode Captcha kemudian digambar pada gambar dengan menggunakan fungsi
imagettftext()
. Pastikan Anda mengganti nilai variabel$font
dengan path menuju font TTF yang ada di server Anda. Anda bisa menggunakan font apa saja yang Anda inginkan untuk membuat tampilan Captcha lebih menarik. - Terakhir, kita mengatur header agar gambar yang dihasilkan ditampilkan sebagai gambar PNG, bukan sebagai halaman HTML.
- Fungsi
imagepng()
digunakan untuk menampilkan gambar Captcha, dan fungsiimagedestroy()
digunakan untuk membersihkan data gambar dari memori.
3. Menghasilkan Kode Acak dan Gambar Captcha
Setelah kita membuat fungsi createCaptcha()
, kita dapat menghasilkan gambar Captcha dengan memanggil fungsi ini. Misalnya, kita dapat membuat halaman captcha.php
dengan kode berikut:
<?php // Memanggil fungsi createCaptcha() dengan ukuran gambar 150x50 piksel createCaptcha(150, 50); ?>
Jika Anda membuka halaman captcha.php
di browser Anda, Anda akan melihat gambar Captcha yang dihasilkan dengan kode acak.
4. Menampilkan Gambar Captcha pada Halaman
Langkah terakhir adalah menampilkan gambar Captcha pada halaman formulir yang ingin kita lindungi dari robot. Misalnya, kita punya halaman formulir.php
yang berisi formulir pendaftaran dengan gambar Captcha. Berikut adalah contoh kodenya:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Formulir Pendaftaran</title> </head> <body> <h1>Formulir Pendaftaran</h1> <form action="proses_pendaftaran.php" method="post"> <label for="nama">Nama:</label> <input type="text" name="nama" id="nama" required> <br> <label for="email">Email:</label> <input type="email" name="email" id="email" required> <br> <label for="captcha">Masukkan Kode Captcha:</label> <input type="text" name="captcha" id="captcha" required> <img src="captcha.php" alt="Captcha Image"> <br> <input type="submit" value="Daftar"> </form> </body> </html>
Penjelasan Kode:
- Kita menampilkan gambar Captcha dengan menambahkan elemen
<img>
pada halaman formulir dengansrc="captcha.php"
. Hal ini akan menampilkan gambar Captcha yang dihasilkan oleh fungsicreateCaptcha()
. - Pengguna harus memasukkan kode Captcha yang terlihat pada gambar ke dalam input teks dengan nama
captcha
. - Setelah pengguna mengisi formulir dan mengirimkan data, kita dapat memverifikasi kode Captcha yang dimasukkan dengan kode asli yang disimpan dalam session.
Kesimpulan
Dengan menggunakan PHP GD, kita dapat dengan mudah membuat Captcha sederhana untuk meningkatkan keamanan pada formulir di situs web kita. Captcha akan membantu mencegah robot atau program otomatis yang tidak diinginkan mengirimkan data palsu atau spam ke formulir kita. Selain itu, kita juga bisa mengkustomisasi tampilan Captcha dengan menggunakan berbagai font dan warna untuk menyesuaikan dengan desain situs web kita.
Ingatlah untuk menyimpan kode Captcha yang dihasilkan dalam session dan memverifikasinya saat pengguna mengirimkan formulir. Dengan demikian, kita dapat memastikan bahwa hanya pengguna manusia yang dapat mengakses halaman atau melakukan tindakan tertentu pada situs web kita.