Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

webbsrvprg/projekt/slutprojekt/

board_random.php
board_travel.php
board_vgy.php
create_comment.php
create_post.php
create_tables.php
darkmode.js
fetch_comments.php
fetch_posts.php
fetch_posts_random.php
forgot_password.php
index.php
login.php
nav.css
nav.php
post.php
register.php
reset_password.php
sql_inject.php
verify.php

forgot_password.php

60 lines UTF-8 Windows (CRLF)
<?php
include ('../../incl/dbconnect.php');

if (
$_SERVER["REQUEST_METHOD"] == "POST") {
    
$email trim($_POST['email']);

    
// hämta användaren baserat på e-post
    
$stmt $dbconn->prepare("SELECT * FROM Users_slutprojekt WHERE email = :email LIMIT 1");
    
$stmt->execute([':email' => $email]);
    
$user $stmt->fetch(PDO::FETCH_ASSOC);

    if (
$user) {
        
// generera token och ställ in utgångstid 
        
$token bin2hex(random_bytes(16));
        
$expires date("Y-m-d H:i:s"time() + 900);

        
// uppdatera användarens återställningsuppgifter
        
$stmt $dbconn->prepare("UPDATE Users_slutprojekt SET password_reset_token = :token, password_reset_expires = :expires WHERE user_id = :id");
        
$stmt->execute([':token' => $token':expires' => $expires':id' => $user['user_id']]);

        
// skicka återställningslänk via e-post
        
$reset_link "https://labb.vgy.se/~filipfg/webbsrvprg/projekt/slutprojekt/reset_password.php?token=" $token;
        
        
$subject "Återställ ditt lösenord";
        
$message "Hej\n\nKlicka på följande länk för att återställa ditt lösenord. Länken är giltig i 15 minuter:\n$reset_link\n";
        
$headers "From: no-reply@yourdomain.com";
        
mail($email$subject$message$headers);

        
$success "Ett e-postmeddelande med instruktioner har skickats till din e-post.";
    } else {
        
$error "Ingen användare hittades med den e-postadressen.";
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Glömt lösenord</title>
    <link rel="stylesheet" href="nav.css">

</head>
<body>
<?php include ('nav.php'); ?>
    
    <h2>Återställ lösenord</h2>
    <?php if(isset($error)) echo "<p style='color:red;'>$error</p>"?>
    <?php if(isset($success)) echo "<p style='color:green;'>$success</p>"?>
    <form action="" method="post">
        <label>Ange din e-post:</label><br>
        <input type="email" name="email" required><br><br>
        <input type="submit" value="Skicka återställningslänk">
    </form>
    <p><a href="login.php">Tillbaka till inloggning</a></p>

<script src="darkmode.js"></script>

</body>
</html>