PHP

Membuat Captcha dengan PHP GD

0

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:

  1. Instal PHP dan Aktifkan Ekstensi GD
  2. Membuat Fungsi Captcha
  3. Menghasilkan Kode Acak dan Gambar Captcha
  4. 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 fungsi imagedestroy() digunakan untuk membersihkan data gambar dari memori.
Baca Juga :
Validasi Nama, Email, Website, dan Nomor Telepon Dengan PHP

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 dengan src="captcha.php". Hal ini akan menampilkan gambar Captcha yang dihasilkan oleh fungsi createCaptcha().
  • 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.

Baca Juga :
Melihat Nilai Kurs Mata Uang dengan API fixer.io pada PHP

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.

rajakode

Mengubah HTML ke PDF dengan Dompdf pada PHP Native Tanpa Composer

Previous article

Membuat Google reCAPTCHA v2 pada PHP

Next article

You may also like

More in PHP