What are the best practices for implementing a login system on a school website to access server files with PHP?

To implement a login system on a school website to access server files with PHP, it is important to securely store user credentials, validate input data, and restrict access to authorized users only. This can be achieved by creating a login form that collects user credentials, verifying them against a database of registered users, and setting session variables upon successful login to grant access to protected server files.

<?php

session_start();

// Check if the user is already logged in
if(isset($_SESSION['user_id'])){
    // Redirect to the protected server files page
    header("Location: server_files.php");
    exit();
}

// Check if the login form is submitted
if(isset($_POST['login'])){
    // Validate input data
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Verify user credentials against a database of registered users
    // Replace this with your own database connection and query
    $valid_user = true; // Assume the user is valid for demonstration purposes

    if($valid_user){
        // Set session variables upon successful login
        $_SESSION['user_id'] = $user_id; // Replace $user_id with the actual user ID
        // Redirect to the protected server files page
        header("Location: server_files.php");
        exit();
    } else {
        // Display an error message if login fails
        $error_message = "Invalid username or password. Please try again.";
    }
}

?>

<!-- HTML login form -->
<form method="post" action="">
    <input type="text" name="username" placeholder="Username" required><br>
    <input type="password" name="password" placeholder="Password" required><br>
    <input type="submit" name="login" value="Login">
</form>

<?php
// Display error message if login fails
if(isset($error_message)){
    echo $error_message;
}
?>