1. <?php
  2.     session_start();
  3.     include '../includes/config.php';
  4.  
  5. if (isset($_POST['submit'])) {    
  6.         if (isset($_POST['gebruikersnaam']) && trim($_POST['gebruikersnaam']) != '' &&
  7.             isset($_POST['wachtwoord']) && trim($_POST['wachtwoord']) != '')
  8.         {
  9.             $gebruikersnaam = trim($_POST['gebruikersnaam']);
  10.             $wachtwoord = md5(trim($_POST['wachtwoord']));
  11.             try
  12.             {
  13.                 $maxAttempts = 3;
  14.                 $attemptsTime = 5;
  15.                
  16.                 $checkUsers =
  17.                     "SELECT
  18.                         gebruiker_id
  19.                     FROM
  20.                         users
  21.                     WHERE
  22.                         gebruikersnaam = :gebruikersnaam
  23.                     AND
  24.                         wachtwoord = :wachtwoord";
  25.                 $userStmt = $db->prepare($checkUsers);
  26.                 $userStmt->execute(array(
  27.                                     ':gebruikersnaam' => $gebruikersnaam,
  28.                                     ':wachtwoord' => $wachtwoord
  29.                                     ));
  30.                 $user = $userStmt->fetchAll();
  31.                
  32.                
  33.                 $checkTries =
  34.                     "SELECT
  35.                         gebruikersnaam
  36.                     FROM
  37.                         loginfail
  38.                     WHERE
  39.                         DateAndTime >= NOW() - INTERVAL :attemptsTime MINUTE
  40.                     AND
  41.                         gebruikersnaam = :gebruikersnaam    
  42.                     GROUP BY
  43.                         gebruikersnaam, IP
  44.                     HAVING
  45.                         (COUNT(gebruikersnaam) = :maxAttempts)";
  46.                 $triesStmt = $db->prepare($checkTries);
  47.                 $triesStmt->execute(array(
  48.                                     ':gebruikersnaam' => $_POST['gebruikersnaam'],
  49.                                     ':attemptsTime' => $attemptsTime,
  50.                                     ':maxAttempts' => $maxAttempts
  51.                                     ));
  52.                 $tries = $triesStmt->fetchAll();
  53.                
  54.                 if (count($user) == 1 && count($tries) == 0)
  55.                 {
  56.                     $_SESSION["user"]=$gebruikersnaam;
  57.                
  58.                     header('Location: dashboard.php');
  59.                     die;
  60.                 }
  61.                 else
  62.                 {
  63.                     $insertTry =
  64.                         "INSERT INTO
  65.                             loginfail
  66.                                 (gebruikersnaam,
  67.                                 IP,
  68.                                 dateAndTime)
  69.                         VALUES
  70.                             (:gebruikersnaam,
  71.                             :IP,
  72.                             NOW())";
  73.                     $insertStmt = $db->prepare($insertTry);
  74.                     $insertStmt->execute(array(
  75.                                             ':gebruikersnaam' => $_POST['gebruikersnaam'],
  76.                                             ':IP' => $_SERVER['REMOTE_ADDR']
  77.                                             ));
  78.                     if(count($tries) > 0)
  79.                     {
  80.                         $message = 'Je hebt te vaak geprobeerd om in te loggen, probeer het over een aantal minuten opnieuw!';
  81.                     }
  82.                     else
  83.                     {
  84.                         $message = 'Ongeldige gebruikersnaam of wachtwoord.';
  85.                     }
  86.                 }
  87.             }
  88.             catch (PDOException $e)
  89.             {
  90.                 $message = $e->getMessage();
  91.             }
  92.             $db = NULL;
  93.         }
  94.         else
  95.         {
  96.             $message = 'Vul alle informatie correct in.';
  97.         }
  98.     }
  99. ?>    
  100. <!DOCTYPE html>
  101. <html>
  102.   <head>
  103.     <meta charset="utf-8">
  104.     <title>ASE</title>
  105.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  106.     <link rel="stylesheet" type="text/css" href="/style/bootstrap.css">
  107.     <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
  108.     <link rel="stylesheet" href="css/styles.css" />
  109.   </head>
  110.   <body >
  111.  
  112.  
  113. <div class="container">
  114. <form role="form" method="POST" action="" class="form-signin">
  115.         <h2 class="form-signin-heading">Inloggen ASE</h2>
  116.         <label for="text" class="sr-only">Gebruikersnaam</label>
  117.         <input type="text" class="form-control" id="gebruikersnaam" name="gebruikersnaam" placeholder="Gebruikersnaam" required autofocus>
  118.         <label for="inputPassword" class="sr-only">Wachtwoord</label>
  119.         <input type="password" class="form-control" id="wachtwoord" name="wachtwoord" placeholder="wachtwoord" value="" required>
  120.         <label>Alle IP adressen worden opgeslagen!</label>
  121.                 <?php
  122.             if (isset($message))
  123.             {
  124.                 echo $message;
  125.             }
  126.         ?>
  127.         <button class="btn btn-lg btn-primary btn-block" type="submit">Inloggen</button>
  128.       </form>
  129.  
  130.     </div>
  131.    
  132.   </body>
  133. </html>