Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // in development, ne asiguram ca afisarea erorilor este "pornita"
- // aceasta este functia folosita pentru a ne asigura ca toate tipurile de erori sunt afisate
- error_reporting(E_ALL);
- // folosind functia ini_set() putem rescrie anumite setari in fisierul de configurare PHP.ini
- // in cazul nostru dorim ca afisarea erorile sa fie "activata", valoarea 1 ( TRUE )
- ini_set('display_errors', 1);
- // pornim mecanisul de sesiuni
- session_start();
- session_regenerate_id(TRUE);
- include_once 'dbconnect.php';
- // daca utilizatorul este autentificat, trebuie sa ne asiguram ca nu mai poate accesa pagina de login
- if (isset($_SESSION['usr_id'])) {
- header("Location: index.php");
- exit;
- }
- // verificam daca cerere HTTP trimisa catre server foloseste metoda POST
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- // primul pas de validare al datelor trimise prin formular, datele fiind stocate in variabila globala $_POST
- // verificam daca au fost trimise date folosesc functia empty()
- // aceasta functie verifica daca o variabila este "goala", nu are nici o valoare
- if (empty($_POST['email']) || empty($_POST['password'])) {
- // salvam erorile intr-o sesiune
- $_SESSION['alert']['error'] = "You have to fill all the required fileds";
- // folosim functia header() si scriem un HEADER in raspunsul mesajului HTTP
- // acest HEADER este folosit pentru a face redirect catre o anumita localtie
- // in cazul nostru, pagina login.php ( probabil aceeasi)
- header("Location: login.php");
- // oprim executia scriptului
- exit;
- }
- // salvam datele trimise prin formular.
- $email = $_POST['email'];
- $password = $_POST['password'];
- //Prevent MySQL Injections
- $email = mysqli_real_escape_string($con, $_POST['email']);
- $password = mysqli_real_escape_string($con, $_POST['password']);
- // Folosind o interogare de forma "SELECT *" este un bad practice in cazul de fata
- // ai nevoie doar de inregistrarile pentru coloanele id, name si password, nu totul, atentie!!
- $result = mysqli_query($con, "SELECT `id`, `email`, `password` FROM users WHERE email = '{$email}'");
- $user = mysqli_fetch_assoc($result);
- // daca nu a fost gasita nici o inregistrare, sau functia password_verify() are ca rezultat FALSE
- if (!$user || !password_verify($password, $user['password'])) {
- $_SESSION['alert']['error'] = "Invalid email or password, please try again!";
- header("Location: login.php");
- exit;
- }
- // daca totul este bine
- $_SESSION['usr_id'] = $user['id'];
- $_SESSION['usr_name'] = $user['name'];
- header("Location: admin.php");
- exit();
- }
- ?>
- <!DOCTYPE html>
- <html lang="ro">
- <head>
- <meta charset="UTF-8">
- <title>Login page</title>
- <meta content="width=device-width, initial-scale=1.0" name="viewport" >
- <link rel="icon" href="favicon.png" type="image/png" sizes="16x16">
- <link rel="stylesheet" href="../css/bootstrap.css" type="text/css" />
- </head>
- <body>
- <div class="wrap">
- <center>
- <div class="alert alert-success">
- <?php if (isset($_SESSION['alert']['error'])): ?>
- <h2><?=$_SESSION['alert']['error'];?></h2>
- <?php endif; ?>
- </div>
- </center>
- <div class="container" style="margin-top: 150px;">
- <div class="row">
- <div class="col-md-4 col-md-offset-4 well">
- <form role="form" action="login.php" method="POST" name="loginform">
- <fieldset>
- <legend>Login</legend>
- <div class="form-group">
- <label for="name">Email</label>
- <input type="email" name="email" placeholder="Email" class="form-control" required />
- </div>
- <div class="form-group">
- <label for="name">Password</label>
- <input type="password" name="password" placeholder="Password" class="form-control" required />
- </div>
- <div class="form-group">
- <input type="submit" name="login" value="Login" class="btn btn-primary" />
- </div>
- </fieldset>
- </form>
- <span class="text-danger"><?php if (isset($errormsg)) { echo $errormsg; } ?></span>
- </div>
- </div>
- </div>
- </div><!-- end wrap -->
- </body>
- </html>
- <?php
- // trebuie stergem aceasta sesiune
- // deoarece ea va continua sa persiste
- if (isset($_SESSION['alert']['error'])) {
- session_unset($_SESSION['alert']);
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement