index.php
<?php { } { } ?> <!DOCTYPE HTML> <html lang="pl"> <head> <title>Panel logowania</title> </head> <body> <main> <?php { ?> <div class="container"> <form action="login.php" method="post"> <input type="email" name="email" placeholder="Adres e-mail:" onfocus="this.placeholder=''" onblur="this.placeholder='login:'" required ><br /> <input type="password" name="pass" placeholder="Hasło:" onfocus="this.placeholder=''" onblur="this.placeholder='hasło:'" pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[?!@#$%^&*])[A-Za-z\d!@#?$%^&*]{8,}$" title="Hasło musi zawierać minimum 8 znaków składających się z co najmniej jednej cyfry, jednej wielkiej i małej litery oraz znaku specjalnego:" required><br /> <button type="submit">ZALOGUJ <i class="fas fa-sign-in-alt"></i></button><br/> <a href="pass_reset.php">Zapomniałeś hasła</a> </form> <?php { } } else { ?> </div> <div class="container"> <form action="login.php" method="post">Kod weryfikacyjny został wysłany na adres e-mail powiązany z Twoim kontem.<br /> <input type="password" name="code_verify" placeholder="Kod weryfikacyjny:" onfocus="this.placeholder=''" onblur="this.placeholder='Kod:'" minlength="8" ><br /> <button type="submit" name="submit_code">ZALOGUJ <i class="fas fa-sign-in-alt"></i></button><br/> </form> <?php { } } ?> </div> </main> </body> </html>
login.php
<?php require_once "connect.php"; $connect = @new mysqli($host, $db_user, $db_password, $db_name); if ($connect->connect_errno!=0) { $cod_error = $connect->connect_errno; $error = '<div class="alert alert-danger"><strong>Błąd '.$cod_error.'!</strong> Przepraszamy za niedogodności i prosimy o wykonanie operacji w innym terminie!</div>'; $_SESSION['e_error'] = $error; } else { { $all_ok=true; $code_verify=$_POST['code_verify']; $result_code = $connect->query("SELECT id, name, roles FROM persons WHERE code_verify='$code_verify' AND email='{$_SESSION['email']}'"); if (!$result_code) throw new Exception($connect->error); $how_code = $result_code->num_rows; if($how_code>0) { $row = $result_code->fetch_assoc(); $_SESSION['logged'] = true; $_SESSION['id'] = $row['id']; $_SESSION['name'] = $row['name']; $_SESSION['roles'] = $row['roles']; switch($row['roles']) { case "1": exit; break; case "0": exit; break; } } else { $all_ok=false; $_SESSION['error']='Wprowadzono błędny kod weryfikacyjny'; } } else { $email = $_POST['email']; $pass = $_POST['pass']; if ($result = @$connect->query(sprintf("SELECT email, pass FROM persons WHERE email='%s'",mysqli_real_escape_string($connect,$email)))) { $users = $result->num_rows; if($users>0) { $row = $result->fetch_assoc(); if (password_verify($pass, $row['pass'])) { if ($connect->query("UPDATE `persons` SET `code_verify` = '$codeAlphabet' WHERE email='$email'")) { require "PHPMailer/PHPMailerAutoload.php"; $mail = new PHPMailer(); $mail->CharSet = "UTF-8"; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = '***********'; $mail->Port = 465; $mail->Username = '***********'; $mail->Password = '***********'; $mail->IsHTML(true); $mail->From='***********'; $mail->FromName='Tytuł'; $mail->AddReplyTo('***********'); $mail->Subject = 'Tytuł'; $mail->AddEmbeddedImage('img/logo.png', 'logo'); $mail->Body ="<center><img class=logo src=\"cid:logo\" width=250px height=60px width=20%> <br/>Wprowadź $codeAlphabet aby się zalogować.</a><br />"; $mail->AddAddress($email); if(!$mail->Send()) { echo '<div class="alert alert-danger"><strong>Błąd!</strong> Kod nie został wysłany, prosimy o wykonanie operacji w innym terminie!</div>'; } else { $_SESSION['email'] = $row['email']; exit; } } } else { $_SESSION['error'] = 'Błędny login lub hasło!'; exit; } } } $connect->close(); } } ?>