What are the best practices for validating and sanitizing user input before using it in PHP include statements?

Validating and sanitizing user input before using it in PHP include statements is crucial to prevent security vulnerabilities such as directory traversal attacks. To validate user input, you can check if the input is a valid file path or filename. To sanitize user input, you can remove any potentially harmful characters or sequences.

$user_input = $_GET['file'];

// Validate user input
if (preg_match('/^[a-zA-Z0-9_\.]+$/', $user_input)) {
    // Sanitize user input
    $file_path = 'path/to/files/' . $user_input;
    
    // Include the file
    if (file_exists($file_path)) {
        include $file_path;
    } else {
        echo 'File not found';
    }
} else {
    echo 'Invalid file input';
}