Show sourcecode
The following files exists in this folder. Click to view.
webbserverprogrammering/submissions/projekt-matkort-handler/
.github/
add_logs.php
admin/
api/
card_balance.php
classes/
config/
food_logs.php
forgot_password.php
includes/
index.php
insert_restaurants.php
install.php
login.php
logout.php
public/
register.php
reset_password.php
verify.php
forgot_password.php
85 lines UTF-8 Windows (CRLF)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
<?php
session_start();
include_once './config/database.php';
include_once './classes/User.php';
$error = '';
$success = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = htmlspecialchars(trim($_POST['email']));
if (empty($email)) {
$error = "Ange en e-postadress.";
} else {
try {
$token = User::generateResetToken($pdo, $email);
if ($token) {
$actual_link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/reset_password.php?token=" . $token;
if ($local) {
$success = "En återställningslänk har skickats (giltig i 15 minuter). <br><br>
<span style='font-size:12px; color:#555;'>[DEV MOCK EMAIL MSG] KLICKA HÄR FÖR ATT ÅTERSTÄLLA:<br>
<a href='".$actual_link."'>".$actual_link."</a></span>";
} else {
$subject = "Återställ ditt lösenord";
$message = "Du har begärt att få återställa ditt lösenord.\n\nKlicka på följande länk för att byta lösenord:\n\n" . $actual_link . "\n\n(Länken slutar fungera om 15 minuter)";
$headers = "From: noreply@" . $_SERVER['HTTP_HOST'] . "\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
mail($email, $subject, $message, $headers);
$success = "Om e-postadressen finns registrerad har vi skickat en länk. Kontrollera din skräppost.";
}
} else {
// If the email wasn't found or isn't verified, we STILL say success to prevent email sweeping enumerations
$success = "Om e-postadressen finns registrerad och är verifierad har vi skickat en länk. Kontrollera din skräppost.";
}
} catch (Exception $e) {
$error = "Något gick fel.";
}
}
}
$page_title = 'Glömt Lösenord';
require_once './includes/header.php';
?>
<div class="container">
<div class="login-box">
<h1>Återställ Lösenord</h1>
<p style="text-align: center; color: #555; margin-bottom: 20px;">Ange din e-post så skickar vi dig en länk för att återställa lösenordet.</p>
<?php if ($error): ?>
<div class="error-message">
<?php echo htmlspecialchars($error); ?>
</div>
<?php endif; ?>
<?php if ($success): ?>
<div class="success-message">
<?php echo $success; ?>
</div>
<?php else: ?>
<form method="POST" action="forgot_password.php">
<div class="form-group">
<label for="email">Epost:</label>
<input
type="email"
id="email"
name="email"
required
>
</div>
<button type="submit" class="btn btn-primary">Skicka återställningslänk</button>
</form>
<?php endif; ?>
<p class="register-link" style="margin-top: 15px;">
<a href="./login.php">Tillbaka till inloggning</a>
</p>
</div>
</div>
<?php require_once './includes/footer.php'; ?>