Type something and hit enter

By On
advertise here

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.
show_captcha_on_invalid_login

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.




Click to comment