Are there any best practices for structuring PHP scripts to separate login functionality from other features?

To separate login functionality from other features in PHP scripts, it is a best practice to create separate files or classes specifically for handling login-related tasks. This helps in keeping the code organized, maintainable, and easy to debug. By encapsulating login functionality in separate modules, it also allows for reusability across different parts of the application.

```php
// login.php

// Include the login functionality
require_once 'login_functions.php';

// Check if the user is already logged in
if (isLoggedIn()) {
    // Redirect to the home page or dashboard
    header('Location: home.php');
    exit;
}

// Process login form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Validate credentials and log in the user
    if (validateLogin($username, $password)) {
        // Redirect to the home page or dashboard
        header('Location: home.php');
        exit;
    } else {
        $error = 'Invalid username or password';
    }
}

// Display the login form
include 'login_form.php';
```
In the above code snippet, the login functionality is separated into different files (`login_functions.php` for login functions and `login_form.php` for the login form). This separation helps in keeping the login-related code isolated and easily manageable.