Show sourcecode
The following files exists in this folder. Click to view.
Webserver1/Ovningar/Slutprojekt/
.env
DEBUG/
Media/
account.js
account.php
callback_log.txt
change_account_details.php
composer.json
composer.lock
forgot_pass.php
forgot_pass_new_pass.php
header.php
index.php
login.php
mediaplayer.php
node_modules/
package-lock.json
package.json
signup.php
style.css
upload.js
upload_callback.php
upload_callback_simulated.php
upload_chunk.php
upload_errors.log
upload_form.php
upload_handler.php
upload_success.log
vendor/
verify_file.php
verifypage.php
change_account_details.php
153 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
<?php
session_start();
/**
* @var PDO $dbconn
* @var bool $local
* @var class DBManager
*/
include('../../incl/dbconnection.php');
$dbmanager = new DBManager();
$cur_pas = $_POST['current-password-input'] ?? null;
$new_pas = $_POST['new-password-input'] ?? null;
$check_pas = $_POST['new-password-check-input'] ?? null;
$no_cur_pass_req = $_SESSION['pass_forgot_authorized'] ?? null;
$email = $_SESSION['email'] ?? null;
$user_id = $_SESSION["userId"] ?? null;
if (!$user_id && !$no_cur_pass_req) {
header("Location:login.php");
}
function verifyDetails($new_pas, $check_pas, $cur_pas) : bool {
global $dbmanager, $user_id, $no_cur_pass_req;
if ($new_pas != $check_pas) {
$_SESSION['flash_msg'] = "Nytt lösenord matchar inte med kontrollrutan!";
return false;
}
if ($no_cur_pass_req) {
return true; // Ska bara kolla om man skrev rätt 2 gånger
}
$actual_pass = $dbmanager->fetch_from_table(["password"], "bay_users", ["id" => $user_id])[0]['password'] ?: null;
// Kolla om rätt nuvarande lösenord
if (!password_verify($cur_pas, $actual_pass)) {
$_SESSION['flash_msg'] = "Fel nuvarande lösenord!";
return false;
}
return true;
}
if (($cur_pas || $no_cur_pass_req) && $new_pas && $check_pas) {
if (verifyDetails($new_pas, $check_pas, $cur_pas)) {
$hashed_pass = password_hash($new_pas, PASSWORD_BCRYPT);
if ($user_id) {
$dbmanager->update_table_values(
"bay_users",
[
"password" => $hashed_pass
],
[
"id" => $user_id
]
);
}
else {
$dbmanager->update_table_values(
"bay_users",
[
"password" => $hashed_pass
],
[
"email" => $email
]
);
$result = $dbmanager->fetch_from_table(["username"], "bay_users", ["email" => $email]);
$username = $result[0]["username"];
}
$_SESSION['flash_msg'] = "Ditt lösenord har uppdaterats. Ditt användarnamn är: $username";
unset($_SESSION['pass_forgot_authorized']);
unset($_SESSION['verificationCode']);
unset($_SESSION['verifyStart']);
unset($_SESSION['verifyType']);
unset($_SESSION['has_mailed']);
unset($_SESSION['hashedPass']);
header("Location: login.php");
exit;
}
}
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ändra kontouppgifter</title>
<link rel="stylesheet" href="style.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<style>
form {
display: grid;
justify-items: center;
}
form .row {
margin: 1rem;
}
</style>
</head>
<body>
<?php include("./header.php") ?>
<form method="post">
<h1>Ändra lösenord</h1>
<?php
if (isset($_SESSION['flash_msg'])) {
echo "<p>" . $_SESSION['flash_msg'] . "</p>";
unset($_SESSION['flash_msg']);
}
if (!$no_cur_pass_req):
?>
<div class="row">
<label for="current-password-input">Nuvarande lösenord:</label>
<input required type="password" name="current-password-input" id="current-password-input" autocomplete="current-password">
</div>
<?php
endif;
?>
<div class="row">
<label for="new-password-input">Nytt lösenord:</label>
<input required type="password" name="new-password-input" id="new-password-input" autocomplete="new-password">
</div>
<div class="row">
<label for="new-password-check-input">Nytt lösenord (igen):</label>
<input required type="password" name="new-password-check-input" id="new-password-check-input" autocomplete="new-password">
</div>
<input disabled id="submit-button" type="submit" value="Byt lösenord">
</form>
<script>
const submitBtn = document.getElementById("submit-button");
const curPas = document.getElementById("current-password-input");
const newPas = document.getElementById("new-password-input");
const checkPas = document.getElementById("new-password-check-input");
function validate() {
if (checkPas.value != newPas.value) {
checkPas.style.outline = "1px solid red";
submitBtn.disabled = true;
}
else {
checkPas.style.outline = "1px solid lime";
submitBtn.disabled = false;
}
}
checkPas.addEventListener("input", validate);
</script>
</body>
</html>