Pernah gak lu bikin form kontak, form login, atau form register, tapi isinya spam semua?
Baru upload website, eh inbox udah penuh sama bot
Nah, salah satu cara paling simpel dan ampuh buat ngusir bot adalah Google reCAPTCHA.
Di artikel ini gue bakal jelasin cara implementasi reCAPTCHA di backend PHP, step-by-step, tanpa ribet, dan gampang dipahami.
Santai aja, kita bahas pelan-pelan.
Apa Itu Google reCAPTCHA?
Singkatnya, reCAPTCHA itu sistem dari Google buat bedain manusia sama bot.
Biasanya bentuknya:
- “I’m not a robot”
- Pilih gambar lampu lalu lintas
- Atau bahkan invisible (tanpa klik)
Di tutorial ini, kita pakai reCAPTCHA v2 (I’m not a robot) karena paling umum dan gampang diimplementasi.
Kenapa gak langsung pakai reCAPTCHA v3 aja? Karena v3 itu kerja di background tanpa interaksi user sama sekali, jadi butuh sedikit lebih banyak konfigurasi buat nentuin threshold score yang pas (v3 ngasih skor 0.0-1.0 buat tiap request, dan kita yang nentuin batas mana yang dianggap bot). Buat pemula atau yang baru pertama kali implementasi, v2 jauh lebih gampang dipahami karena hasilnya jelas: user checklist atau enggak.
1. Daftarin Website ke Google reCAPTCHA
Pertama, buka halaman resmi Google reCAPTCHA:
https://www.google.com/recaptcha/admin
Terus:
- Login pakai akun Google
- Klik Create
- Isi label (bebas)
- Pilih reCAPTCHA v2
- Pilih tipe “I’m not a robot” Checkbox
- Masukkan domain website lu
- Submit
Nanti lu bakal dapet:
- Site Key
- Secret Key
Nah, dua key ini penting banget. Jangan sampe bocor ya bro, terutama Secret Key.

2. Pasang reCAPTCHA di Form HTML
Contoh form sederhana:
<form action="proses.php" method="POST">
<input type="text" name="nama" placeholder="Nama" required>
<input type="email" name="email" placeholder="Email" required>
<div class="g-recaptcha" data-sitekey="ISI_SITE_KEY_KAMU"></div>
<button type="submit">Kirim</button>
</form>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Kalau form lu tampil dan ada checkbox “I’m not a robot”, berarti setup frontend udah beres.

3. Validasi reCAPTCHA di Backend PHP
Ini bagian paling penting, bro.
reCAPTCHA wajib divalidasi di backend, bukan cuma frontend.
Contoh file proses.php:
<?php
$secretKey = "ISI_SECRET_KEY_KAMU";
if (!isset($_POST['g-recaptcha-response'])) {
die("reCAPTCHA tidak ditemukan");
}
$response = $_POST['g-recaptcha-response'];
$remoteIp = $_SERVER['REMOTE_ADDR'];
$verifyUrl = "https://www.google.com/recaptcha/api/siteverify";
$data = [
'secret' => $secretKey,
'response' => $response,
'remoteip' => $remoteIp
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
]
];
$context = stream_context_create($options);
$result = file_get_contents($verifyUrl, false, $context);
$resultJson = json_decode($result, true);
if ($resultJson['success'] !== true) {
die("Verifikasi reCAPTCHA gagal");
}
// Kalau lolos reCAPTCHA, lanjut proses form
echo "Form berhasil diproses";
Kalau success bernilai true, artinya user itu manusia.
Kalau false, fix bot atau request mencurigakan.

4. Tips Penting Biar reCAPTCHA Lebih Aman
Beberapa tips dari pengalaman:
- Jangan pernah validasi reCAPTCHA cuma di frontend
- Simpan Secret Key di
.envatau config, jangan hardcode - Tambahin validasi lain (rate limit, CSRF token)
- Jangan tampilkan pesan error terlalu detail ke user
reCAPTCHA itu lapisan keamanan tambahan, bukan satu-satunya benteng.
Sebagai gambaran, ini contoh sederhana nambahin CSRF token biar makin aman. Sebelum render form, generate token dan simpan di session:
session_start();
$csrfToken = bin2hex(random_bytes(32));
$_SESSION["csrf_token"] = $csrfToken;
Terus tambahin sebagai hidden input di form HTML, dan validasi di proses.php sebelum lanjut ke verifikasi reCAPTCHA:
if (!hash_equals($_SESSION["csrf_token"], $_POST["csrf_token"] ?? "")) {
die("Token tidak valid");
}
Kombinasi reCAPTCHA plus CSRF token ini bikin form kamu jauh lebih tahan dari bot otomatis sekaligus serangan cross-site request forgery, dua ancaman yang sering muncul bareng-bareng di form publik.
5. Test Implementasi
Coba submit form:
- Tanpa centang reCAPTCHA, harus gagal
- Dengan centang, harus sukses
Kalau sesuai, berarti implementasi lu udah bener. Jangan lupa juga test di beberapa browser berbeda (Chrome, Firefox, Safari) karena kadang ada perbedaan kecil soal cara browser handle script eksternal dari Google, apalagi kalau user pakai extension pemblokir iklan atau tracker yang bisa ikut ngeblokir script reCAPTCHA.

Kendala yang Sering Muncul
- Checkbox reCAPTCHA gak muncul sama sekali
Cek console browser (F12), biasanya ada error terkait domain yang gak terdaftar. Pastikan domain yang kamu daftarin di halaman admin reCAPTCHA persis sama dengan domain yang dipakai, termasuk www atau enggaknya. - Verifikasi selalu gagal padahal sudah dicentang
Kemungkinan besar Site Key dan Secret Key ketuker atau salah copy-paste. Site Key dipakai di HTML/frontend, Secret Key dipakai di PHP/backend, jangan sampai kebalik. - Error “file_get_contents(): SSL operation failed”
Biasanya karena konfigurasi OpenSSL/CA certificate di server belum lengkap. Kalau pakai shared hosting, biasanya ini otomatis, tapi kalau VPS sendiri, mungkin perlu update CA certificate bundle. - reCAPTCHA lambat muncul atau kadang gak keload
Ini biasanya bukan masalah di kode kamu, tapi karena Google reCAPTCHA API diakses dari server Google yang kadang lambat diakses dari lokasi tertentu. Gak banyak yang bisa dilakuin selain nunggu, atau pertimbangkan pakai alternatif seperti hCaptcha kalau ini jadi masalah serius.
Penutup
Nah bro, segitu dulu cara implementasi Google reCAPTCHA di backend PHP.
Gak ribet, tapi efeknya gede banget buat ngurangin spam dan bot yang gak jelas.
Semoga artikel ini ngebantu lu yang lagi ngamanin form website.
Kalau lu mau versi reCAPTCHA v3, Invisible, atau implementasi di framework kayak Laravel atau CodeIgniter, tinggal bilang aja.
Sampai ketemu di tutorial santai berikutnya.
Tetap aman, tetap ngoding dengan tenang



























