Dalam tutorial ini, kami akan menunjukkan kode captcha jika pengguna mencoba lebih dari 3 upaya login yang gagal. Dalam tutorial sebelumnya, kami telah melihat login pengguna dan captcha PHP . Jadi, kita akan menggabungkan dua tutorial ini untuk menambahkan kontrol captcha untuk login yang tidak valid.
Dalam contoh ini, kita memiliki tabel MySQL untuk menambahkan entri masuk yang gagal. Kami menghitung sejumlah upaya gagal berdasarkan Alamat IP klien. Jika jumlah ini melebihi 3, maka kode captcha akan ditampilkan kepada pengguna.

Kode HTML untuk Login dengan Captcha
Kode ini berisi form login dengan kode captcha. Kode captcha akan ditampilkan ketika pengguna mencoba lebih dari 3 upaya tidak sah.
<form name = "frmUser" method = "posting" action = ""> <div class = "message"> <? php if ($ message! = "") {echo $ message; }?> </ div> <table border = "0" cellpadding = "10" cellspacing = "1" width = "500" align = "center"> <tr class = "tableheader"> <td align = "center" colspan = "2"> Masukkan Detail Login </ td> </ tr> <tr class = "tablerow"> <td align = "right"> Nama Pengguna </ td> <td> <input type = "text" name = "user_name"> </ td> </ tr> <tr class = "tablerow"> <td align = "right"> Kata Sandi </ td> <td> <input type = "password" name = "password"> </ td> </ tr> <? php if (isset ($ failed_login_attempt) && $ failed_login_attempt> = 3) {?> <tr class = "tablerow"> <td align = "right"> </ td> <td> <input name = "captcha_code" ketik = "text"> <br> <br> <img src = "captcha_code.php" /> </ td> </ tr> <? php}?> <tr class = "tableheader"> <td align = "center" colspan = "2"> <input type = "submit" name = "submit" value = "Kirim"> </ td> </ tr> </ table> </ form>
Kode PHP untuk Menghitung Penghitungan Masuk yang Gagal
Kode ini digunakan untuk menghitung jumlah upaya masuk yang tidak valid berdasarkan alamat IP.
$ mysqli = new mysqli ('localhost', 'root', '', 'blog_examples'); $ ip = $ _SERVER ['REMOTE_ADDR']; $ result = $ mysqli-> query ("SELECT count (ip_address) AS failed_login_attempt FROM failed_login WHERE ip_address = '$ ip' DAN tanggal BETWEEN DATE_SUB (SEKARANG (), INTERVAL 1 HARI) DAN SEKARANG ()"); $ row = $ result-> fetch_assoc (); $ failed_login_attempt = $ row ['failed_login_attempt']; $ result-> free ();
Masukkan Entri Masuk Tidak Valid
Kode ini memvalidasi kredensial pengguna dan jika kredensial tidak valid maka entri dengan ip_address dan tanggal akan ditambahkan ke database.
session_start (); $ message = ""; $ captcha = true; if (count ($ _ POST)> 0 && isset ($ _ POST ["captcha_code"]) && $ _POST ["captcha_code"]! = $ _ SESSION ["captcha_code"]) { $ captcha = false; $ message = "Masukkan Captcha Code yang Benar"; } if (count ($ _ POST)> 0 && $ captcha == true) { $ result = $ mysqli-> query ("SELECT * FROM users WHERE user_name = '". $ _POST ["user_name"]. "' dan kata sandi = '". $ _POST ["password"]. "'"); $ row = $ result-> fetch_assoc (); $ result-> free (); if (is_array ($ row)) { $ _SESSION ["user_id"] = $ row ["id"]; $ _SESSION ["user_name"] = $ row ["user_name"]; $ mysqli-> query ("DELETE FROM failed_login WHERE ip_address = '$ ip'"); } lain { $ message = "Nama Pengguna atau Kata Sandi Tidak Valid!"; if ($ failed_login_attempt <3) { $ mysqli-> query ("INSERT INTO failed_login (ip_address, tanggal) VALUES ('$ ip', NOW ())"); } lain { $ message = "Anda telah mencoba lebih dari 3 upaya tidak sah. Masukkan kode captcha."; } } }
Tutorial kode PHP ini diterbitkan pada 2 Februari 2015.
