What are the best practices for allowing users to input database connection details in a PHP application?

When allowing users to input database connection details in a PHP application, it is important to sanitize and validate the input to prevent SQL injection attacks and other security vulnerabilities. One common practice is to use prepared statements with parameterized queries to securely interact with the database. Additionally, storing sensitive information like database credentials in a separate configuration file outside of the web root is recommended to prevent unauthorized access.

// Sample PHP code snippet for allowing users to input database connection details securely

// Validate and sanitize user input
$host = filter_var($_POST['host'], FILTER_SANITIZE_STRING);
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
$database = filter_var($_POST['database'], FILTER_SANITIZE_STRING);

// Create a PDO connection using the user input
try {
    $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully to the database.";
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}