Skip to main content

Membuat Login dengan Validasi Waktu (CountDown)

Kali ini admin akan posting Cara Membuat Login degan Validasi Waktu dengan PHP MYSQL.
Validasi waktu disini maksudnya kita akan membuat halaman login trial yang membatasi percobaan login misalnya jika kita salah dalam memasukkan username atau password melebihi 5 kali atau batas percobaan yang akan ditentukan, kita harus menunggu waktu 25 detik untuk mencoba login kembali.
Hal ini biasa ada pada handphone, ini juga salah satu bentuk verifikasi yang dapat mencegah serangan robot.
Dalam pembuatan login ini kita bisa memberikan kesempatan lgin sesuai settingan, ada baiknya jika validasi ini dikombinasikan dengan validasi form input dengan javascript dengan kesempatan 3 kali percobaan. Nah jika user sudah mencoba beberapa kali login sesuai dengan batasnya, maka otomatis user harus menunggu sesuai dengan waktu yang ditentukan.
Membuat login PHP MYSQL dengan sistem validasi waktu apabila salah memasukkan username atau 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 File 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; ?>
Selamat mencoba dan semoga bermanfaat...

Comments

Popular posts from this blog

Membuat Upload File dengan Progress bar (PHP, MySQL, AJAX, Bootstrap)

Membuat Upload File dengan Progress bar (PHP, MySQL, AJAX, Bootstrap) . Hai sobat mediakunci, kali ini saya akan membuat sebuah tutorial tentang cara membuat Upload file dengan progress bar, tentu saja menggunakan PHP untuk bahasa pemrogramannya, MySQL sebagai databasenya, AJAX untuk menghandle progress barnya, dan Bootstrap untuk interfacenya biar cantik…  Langsung saja kita masuk ke dalam tutorialnya, bagaimana untuk membuat Upload File dengan Progress bar ini. Ikuti dengan seksama ya sob, kalau tidak bisa silahkan kontak saya aja (text only ya sob). Nanti kita akan membuat file berikut ini sob: index.php (untuk tampilan awal, form dan progress bar) config.php (koneksi ke database) upload.php (proses upload file, menyimpan data ke database) upload.js (untuk handle progress bar) Download Bootstrap Pertama karena ini menggunakan Bootstrap untuk interfacenya, maka silahkan download dulu Bootstrap di webseite resminya, atau bisa klik  disini . Saya masih menggun...

10 Aplikasi Android Untuk Pembersih RAM yang Efektif, Terbaik, dan Gratis

Kembali lagi bersama Media Kunci , kali ini saya akan membahas mengenai 10 Aplikasi Android Untuk Pembersih RAM yang Efektif, Terbaik, dan Gratis yang cocok untuk smartphone Android manapun. Artikel ini akan cocok untuk kamu yang memiliki kapasitas RAM yang sering penuh dan memori yang cenderung penuh. Karena penggunaan RAM yang tinggi akan mengurangi performa aplikasi yang ingin kamu gunakan dan membuat smartphone Android kamu lemot. Tidak perlu khawatir karena sekarang telah tersedia aplikasi yang dapat membantu mengoptimalkan kerja RAM kamu. Tanpa berbasa-basi lagi, langsung saja simak 10 Aplikasi Android Untuk Pembersih RAM yang Efektif, Terbaik, dan Gratis berikut. 1.  Clean Master Aplikasi populer dari Cheetah Mobile ini telah didownload oleh lebih dari 500 juta pengguna di seluruh dunia. Telah terbukti bahwa aplikasi ini merupakan aplikasi pembersih nomor 1 yang patut kamu miliki. Selain RAM cleaner, aplikasi ini juga dibekali oleh junk cleaner, battery saver, antiv...

Menampilkan Data dari Database MySQL Tanpa Loading Dengan jQuery

Menampilkan Data dari Database MySQL Tanpa Loading Dengan jQuery . Kali ini tutorial tentang jQuery yaitu bagaimana cara menampilkan data di database MySQL tanpa loading dengan PHP dan jQuery. Pada tutorial sebelumnya juga sudah saya buat tentang  Cara Insert Data ke Database MySQL tanpa loading dengan PHP dan jQuery . Beberapa hal di butuhkan adalah tentu saja sebuah Database dan Table di phpMyAdmin. Dan juga file jQuery yang bisa Anda download diwebsite resminya  disini . Dan untuk file apa saja nanti yang akan dibuat, silahkan lihat struktur folder di bawah ini: Nah, seperti pada gambar di atas, setelah Anda mendownload jQuery silahkan tempatkan file tersebut di dalam folder  scripts . Oke, langsung dimulai saja. Pertama buat sebuah Database di phpMyAdmin Anda dan dalam hal ini saya membuat Database dengan nama  terserah , kemudian import/dumping Script SQL di bawah ini: CREATE TABLE `siswa` ( `nama` varchar(32) NOT NULL, `kelas` varchar(3) NOT NULL, ...