Show sourcecode
The following files exists in this folder. Click to view.
webbsrvprg/exercises/slutprojekt/
actions.php
administer_users.php
create_code.php
index.php
login copy.php
login.php
main.php
password_renewals.php
setup.php
sign_up.php
verification.php
verify_mail.php
login.php
105 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
session_start(["gc_maxlifetime" => 86400]);
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<style>
fieldset {
margin: 5px;
padding: 5px;
border: 2px solid black;
}
#show_password {
width: 10em;
border: 1px solid gray;
background-color: lightgray;
}
* {
box-sizing: border-box;
}
</style>
</head>
<?php
try {
/** @var PDO $dbconn */
include("../databaser/dbconnection.php");
if (isset($_GET["log_out"]) && $_GET["log_out"]) {
// Om man kommit hit för att logga ut.
session_unset();
}
if (isset($_POST["username"]) && isset($_POST["password"])) {
$sql = "SELECT id, password, admin FROM bs_users WHERE username = ?";
$stmt = $dbconn->prepare($sql);
$data = [$_POST["username"]];
$stmt->execute($data);
$result = $stmt->fetch();
if (!$result) {
echo ("Användaren finns inte<br>");
exit();
}
$hashed_password = $result["password"];
$password_is_correct = password_verify($_POST["password"], $hashed_password);
if (!$password_is_correct) {
echo ("Fel användarnamn eller lösenord<br>");
exit();
}
// Behövs egentligen inte en prepare då id't hämtas rakt ut databasen men lika bra.
// HM kanske bara köra via action.php ?
$sql = "UPDATE bs_users SET last_checkin = NOW() WHERE id = ?";
$stmt = $dbconn->prepare($sql);
$data = [$result["id"]];
$stmt->execute($data);
// "loggar in" användaren och skickar till main.
$_SESSION["username"] = $_POST["username"];
$_SESSION["user_id"] = $result["id"];
$_SESSION["is_admin"] = $result["admin"];
header("Location: main.php");
}
} catch (PDOException $e) {
echo ($e->getMessage());
}
?>
<body>
<a href="sign_up.php" target="_blank">Skapa konto</a><br>
<a href="renew_password.php" target="_blank">Jag har glömt mitt lösenord</a>
<form method="POST" action="login.php">
<fieldset>
<legend>Logga in</legend>
<input type="text" required maxlength="50" name="username" id="username"><label for="username">Användarnamn</label><br>
<input type="password" required maxlength="255" minlength="8" name="password" id="password"><label for="password">Lösenord</label><br>
<div id="show_password">Visa lösenord</div><br>
<button type="submit">Logga in</button>
</fieldset>
</form>
<script>
const show_pass_btn = document.getElementById("show_password");
const password_input = document.getElementById("password");
show_pass_btn.addEventListener("mouseover", function() {
password_input.type = "text";
})
show_pass_btn.addEventListener("mouseleave", function() {
password_input.type = "password";
})
</script>
</body>
</html>