Rumahweb Journal
banner - Cara Menambahkan reCaptcha di Contact Form CodeIgniter 4

Cara Menambahkan reCaptcha di Contact Form CodeIgniter 4

Pada panduan sebelumnya, kita telah mempelajari cara membuat contact form di CodeIgniter 4. Dalam artikel ini, kita akan melanjutkan langkah tersebut dengan menambahkan reCaptcha di contact form CodeIgniter 4.

Pada panduan sebelumnya, kita hanya mempelajari cara membuat formulir kontak sederhana. Namun, tanpa perlindungan tambahan, kotak masuk email Anda rentan terhadap serangan SPAM. Untuk mengatasinya, Anda dapat menggunakan reCaptcha sebagai solusi efektif.

Dalam panduan ini, kita akan mempelajari cara menambahkan reCaptcha di contact form CodeIgniter 4 dengan menggunakan Cloudflare Turnstile. Pastikan Anda mengikuti panduan ini hingga selesai, agar reCaptcha dapat berfungsi dengan optimal.

Apa itu Cloudflare Turnstile?

Cloudflare Turnstile adalah tool untuk memvalidasi pengunjung yang akan mengakses situs Anda, dengan menentukan apakah pengunjung tersebut adalah manusia atau robot melalui challenge.

Untuk menggunakan Cloudflare Turnstile, Anda perlu membuat sitekey dan secret key yang kemudian akan diintegrasikan dengan aplikasi web Anda.

Generate Key Cloudflare Turnstile

Pastikan Anda memiliki akun Cloudflare, jika belum maka silahkan daftar terlebih dulu. Kemudian ikuti langkah-langkahnya dibawah:

Pindah Hosting ke Rumahweb Gratis

  1. Login akun Cloudflare Anda.
  2. Masuk ke menu Turnstile.
  3. Klik Add Widget, selanjutnya masukan nama dan klik Add Hostnames.
  4. Centang nama domain yang telah terdaftar di Cloudflare dan klik Add, kemudian klik Add kembali di menu Add Hostnames.
Generate Key Cloudflare Turnstile

Dalam menu Turnstile, Anda bisa melanjutkan penyetingan dan menentukan mode widget dalam melakukan challenge.

Jika semua persiapan sudah ditentukan, silahkan klik tombol Create agar sitekey dan secret key muncul.

menentukan mode widget challenge.

Menambahkan reCaptcha di Contact Form CodeIgniter

Untuk menambahkan Cloudflare Turnstile pada kode yang sudah ada disini, kami akan memberikan bagian yang penting di bawah ini.

Step 1. Edit Controller Contact

Edit file Contact.php yang berada dalam folder Controllers dan ubah menjadi script berikut:

class Contact extends Controller
{ 
    public function index()
    {
        // site key - Cloudflare Turnstile 
        $data['site_key'] = 'xxxxxxxxxxxx'; 
        return view('contact_form', $data);
    }

    public function send()
    {
        // secret key - Cloudflare Turnstile 
        $secret_key = 'xxxxxxxxxxxxx'; 

        // Respon validasi Turnstile
        $response = $this->request->getPost('cf-turnstile-response');
        $verification = $this->verify_turnstile($secret_key, $response);

        if (!$verification->success) {
            // Jika gagal verifikasi, tampil error
            return redirect()->to('/contact')->with('error', 'Turnstile verification failed.');
        }

        $email = \Config\Services::email();
...

Masih di file yang sama, tambahkan function private berikut:

...
    private function verify_turnstile($secret_key, $response)
    {
        $url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';

        $data = [
            'secret' => $secret_key,
            'response' => $response,
        ];

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $result = curl_exec($ch);
        curl_close($ch);

        return json_decode($result);
    }
}

Full script bisa Anda klik disini.

Step 2. Edit View Contact

Pada bagian ini, Anda perlu menambahkan widget Cloudflare Turnstile. Silahkan edit file contact_form.php yang ada di folder Views dan tambahkan script widget dibawah:

        <!-- Turnstile widget -->
        <div class="cf-turnstile" data-sitekey="<?= $site_key ?>"></div>

Hasilnya seperti form dibawah:

    <form action="<?= base_url('contact') ?>" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <br>

        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>

        <label for="telp">Phone:</label>
        <input type="text" id="telp" name="telp" required>
        <br>

        <label for="message">Message:</label>
        <textarea id="message" name="message" required></textarea>
        <br>

        <!-- Turnstile widget -->
        <div class="cf-turnstile" data-sitekey="<?= $site_key ?>"></div>
        <br>

        <button type="submit">Send</button>
    </form>

Jika semua step sudah dilakukan dengan benar, Anda akan menemukan widget capcha milik Cloudflare seperti gambar dibawah.

menambahkan reCaptcha di contact form CodeIgniter 4 telah berhasil

Agar dapat digunakan dengan baik, pastikan Anda sudah menggunakan site dan secret key sesuai nama domainnya.

Demikian panduan kami tentang cara menambahkan reCaptcha di form contact CodeIgniter 4, semoga bermanfaat!

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 5 / 5. Vote count: 2

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Cloud Hosting Terbaik Rumahweb

Fredric Lesomar

I am an ameteur programer and cybersecurity enthusiast. Love much, mother Python language, machine learning and You!

banner pop up - Pindah Hosting ke Rumahweb