Show sourcecode
The following files exists in this folder. Click to view.
create_test.php
create_test_fuckingtrasig.php
hash.php
index.php
login.php
main.php
personal_results.php
setup.php
sign_up.php
test_correcting.php
tests.php
user_administration.php
verification.php
sign_up.php
97 lines UTF-8 Windows (CRLF)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sign up</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>
<body>
<form method="POST" action="">
<fieldset>
<legend>Skapa konto</legend>
<input type="text" required maxlength="100" name="name" id="name"><label for="name">Namn</label><br>
<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 minst 8 tecken</label><br>
<div id="show_password">Visa lösenord</div><br>
<!-- Man får välja själv om man ska vara admin eller inte -->
<input type="checkbox" name="admin" id="admin"><label for="admin">Admin?</label><br>
<button type="submit">Skapa konto</button>
</fieldset>
</form>
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>
<?php
if (isset($_POST["name"]) && isset($_POST["username"]) && isset($_POST["password"])) {
// Om användaren skrivit in allt försöker den skapa ett konto i databasen
// Om användaren fifflat med inputsen för att få ogiltiga så blir det ett errormeddelande bara
try {
/** @var PDO $dbconn */
include("../databaser/dbconnection.php");
// Kollar om det redan finns någon med det användarnamnet
$sql = "SELECT 1 FROM quiz_users WHERE username = ?";
$stmt = $dbconn->prepare($sql);
$stmt->execute([$_POST["username"]]);
$result = $stmt->fetch();
if ($result) {
echo ("Användare med det användarnamnet finns redan. Försök med annat");
return;
// HM kanske fyll i användarens andra uppgifter så att de kan testa rätt problemfritt?
}
$sql = "INSERT INTO quiz_users (name, username, password, salt, admin) VALUES(?,?,?,?,?)";
$stmt = $dbconn->prepare($sql);
// Skapar salt och hashar lösenordet
include("hash.php");
$salt = generateSalt($_POST["username"]); // Saltet baseras på ens användarnamn för att det ska vara unikt
$password = customHash($_POST["password"], $salt);
$isAdmin = isset($_POST["admin"]) ? 1 : 0; // 1 om man är admin, annars 0
$data = [$_POST["name"], $_POST["username"], $password, $salt, $isAdmin];
$stmt->execute($data);
echo ("Användare skapad. Du kan nu gå till inloggnignssidan och logga in");
} catch (PDOException $e) {
echo ($e->getMessage());
}
}
?>
<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>