Membuat Login dengan Validasi Waktu
Kali ini admin akan Posting artikel Cara Membuat Login Dengan PHP MYSQL dengan Validasi Waktu, maksudnya... Disini kita membuat login trial yang membatasi percobaan login Jika kita salah dalam memasukkan password sebanyak 5 kali , kita harus menunggu sekitar 25 detik / lebih untuk bisa login kembali dan memasukkan password, hal ini biasa ada pada handphone, Ini juga salah satu bentuk verifikasi yang dapat mencegah serangan robot, Dalam Pembuatan logn ini kita bisa memberikan kesempatan login sesuai settingan, ada baiknya jika validasi ini di kombinasikan dengan Validasi Form Input Dengan Javascript yang kita buat contohnya :
Membuat Login PHP MYSQL dengan Sistem Validasi Waktu apabila Salah memasukkan username / password
File Index.php
<?php
//index.php
session_start(); ?>
<h1>Home</h1>
<?php if (isset($_SESSION['username'])): ?>
Hello <?php echo $_SESSION['username']?> (<a href="login.php?logout">Logout</a>)
<p>
Anda mendapatkan informasi penting.
</p>
<?php else: ?>
<p>
Silakan <a href="login.php">login</a> untuk melihat informasi penting.
</p>
<?php endif; ?>
Untuk Login.php
<?php
//login.php
session_start();
if (isset($_SESSION['username'])){
if (isset($_GET['logout'])) unset($_SESSION['username']);
header("location: index.php");
} else {
if ($_POST){
//asumsi username and password hasil fetched form database
$username = "admin";
$password = "21232f297a57a5a743894a0e4a801fc3"; //admin
//password di atas hasil md5("admin");
if ($_POST['uname']==$username){ //bandingkan username
if (md5($_POST['passwd'])==$password){ //bandingkan password
//sukses
unset($_SESSION['failed']); //hapus failed
unset($_SESSION['delayto']); //hapus delayto
$_SESSION['username']=$username; //catat username
header("location: index.php"); //ke halaman utama
}
}
//failed catat sudah berapa kali
$message = "Username/password tidak match";
if (!isset($_SESSION['failed'])) $_SESSION['failed']=0;
$_SESSION['failed']++; //faileb bertambah
//delay sebanyak 2 pangkat gagal
$delay = pow(2,$_SESSION['failed']);
$_SESSION['delayto'] = strtotime("+ {$delay} seconds");
}
}
?>
<h2>Login</h2>
<?php
if (isset($message)) echo $message."<br/>";
if (isset($_SESSION['delayto'])) $delay = $_SESSION['delayto'] - time();
else $delay = 0;
if ($delay > 0): ?>
<p>
Sudah <?php echo $_SESSION['failed'];?> kali gagal.<br/>
Silakan coba
<span id="delay"><?php echo $delay;?></span>.
</p>
<script type="text/javascript">
var seconds;
var temp;
function countdown() {
seconds = document.getElementById('delay').innerHTML;
seconds = parseInt(seconds, 10);
if (seconds == 1) {
temp = document.getElementById('delay');
temp.innerHTML = "<a href='login.php'>login</a>";
return;
}
seconds--;
temp = document.getElementById('delay');
temp.innerHTML = seconds+" detik lagi";
timeoutMyOswego = setTimeout(countdown, 1000);
}
countdown();
</script>
<?php else: ?>
<form method="POST">
Username: <br/>
<input type="text" name="uname"><br/>
Password :<br/>
<input type="password" name="passwd"><br/>
<input type="submit" value="Submit">
</form>
<?php endif; ?>
Untuk Demo silahkan lihat disini