Advertisement
Bucurzoom

Untitled

Apr 3rd, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.31 KB | None | 0 0
  1. <?php
  2. // in development, ne asiguram ca afisarea erorilor este "pornita"
  3. // aceasta este functia folosita pentru a ne asigura ca toate tipurile de erori sunt afisate
  4. error_reporting(E_ALL);
  5.  
  6. // folosind functia ini_set() putem rescrie anumite setari in fisierul de configurare PHP.ini
  7. // in cazul nostru dorim ca afisarea erorile sa fie "activata", valoarea 1 ( TRUE )
  8. ini_set('display_errors', 1);
  9.  
  10. // pornim mecanisul de sesiuni
  11. session_start();
  12. session_regenerate_id(TRUE);
  13.  
  14.  
  15. include_once 'dbconnect.php';
  16.  
  17.  
  18. // daca utilizatorul este autentificat, trebuie sa ne asiguram ca nu mai poate accesa pagina de login
  19. if (isset($_SESSION['usr_id'])) {
  20. header("Location: index.php");
  21. exit;
  22. }
  23.  
  24. // verificam daca cerere HTTP trimisa catre server foloseste metoda POST
  25. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  26.  
  27. // primul pas de validare al datelor trimise prin formular, datele fiind stocate in variabila globala $_POST
  28. // verificam daca au fost trimise date folosesc functia empty()
  29. // aceasta functie verifica daca o variabila este "goala", nu are nici o valoare
  30. if (empty($_POST['email']) || empty($_POST['password'])) {
  31. // salvam erorile intr-o sesiune
  32.  
  33. $_SESSION['alert']['error'] = "You have to fill all the required fileds";
  34.  
  35. // folosim functia header() si scriem un HEADER in raspunsul mesajului HTTP
  36. // acest HEADER este folosit pentru a face redirect catre o anumita localtie
  37. // in cazul nostru, pagina login.php ( probabil aceeasi)
  38. header("Location: login.php");
  39. // oprim executia scriptului
  40. exit;
  41. }
  42.  
  43. // salvam datele trimise prin formular.
  44. $email = $_POST['email'];
  45. $password = $_POST['password'];
  46.  
  47. //Prevent MySQL Injections
  48. $email = mysqli_real_escape_string($con, $_POST['email']);
  49. $password = mysqli_real_escape_string($con, $_POST['password']);
  50.  
  51. // Folosind o interogare de forma "SELECT *" este un bad practice in cazul de fata
  52. // ai nevoie doar de inregistrarile pentru coloanele id, name si password, nu totul, atentie!!
  53. $result = mysqli_query($con, "SELECT `id`, `email`, `password` FROM users WHERE email = '{$email}'");
  54.  
  55. $user = mysqli_fetch_assoc($result);
  56.  
  57. // daca nu a fost gasita nici o inregistrare, sau functia password_verify() are ca rezultat FALSE
  58.  
  59. if (!$user || !password_verify($password, $user['password'])) {
  60. $_SESSION['alert']['error'] = "Invalid email or password, please try again!";
  61. header("Location: login.php");
  62. exit;
  63. }
  64.  
  65. // daca totul este bine
  66. $_SESSION['usr_id'] = $user['id'];
  67. $_SESSION['usr_name'] = $user['name'];
  68. header("Location: admin.php");
  69. exit();
  70.  
  71.  
  72. }
  73. ?>
  74.  
  75. <!DOCTYPE html>
  76. <html lang="ro">
  77. <head>
  78. <meta charset="UTF-8">
  79. <title>Login page</title>
  80. <meta content="width=device-width, initial-scale=1.0" name="viewport" >
  81. <link rel="icon" href="favicon.png" type="image/png" sizes="16x16">
  82. <link rel="stylesheet" href="../css/bootstrap.css" type="text/css" />
  83. </head>
  84. <body>
  85.  
  86.  
  87. <div class="wrap">
  88.  
  89. <center>
  90. <div class="alert alert-success">
  91. <?php if (isset($_SESSION['alert']['error'])): ?>
  92. <h2><?=$_SESSION['alert']['error'];?></h2>
  93. <?php endif; ?>
  94.  
  95. </div>
  96. </center>
  97.  
  98.  
  99. <div class="container" style="margin-top: 150px;">
  100. <div class="row">
  101. <div class="col-md-4 col-md-offset-4 well">
  102. <form role="form" action="login.php" method="POST" name="loginform">
  103. <fieldset>
  104. <legend>Login</legend>
  105.  
  106. <div class="form-group">
  107. <label for="name">Email</label>
  108. <input type="email" name="email" placeholder="Email" class="form-control" required />
  109. </div>
  110.  
  111. <div class="form-group">
  112. <label for="name">Password</label>
  113. <input type="password" name="password" placeholder="Password" class="form-control" required />
  114. </div>
  115.  
  116.  
  117. <div class="form-group">
  118. <input type="submit" name="login" value="Login" class="btn btn-primary" />
  119. </div>
  120. </fieldset>
  121. </form>
  122. <span class="text-danger"><?php if (isset($errormsg)) { echo $errormsg; } ?></span>
  123. </div>
  124. </div>
  125.  
  126. </div>
  127.  
  128.  
  129. </div><!-- end wrap -->
  130.  
  131.  
  132. </body>
  133. </html>
  134. <?php
  135. // trebuie stergem aceasta sesiune
  136. // deoarece ea va continua sa persiste
  137. if (isset($_SESSION['alert']['error'])) {
  138. session_unset($_SESSION['alert']);
  139. }
  140. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement