What are the modern Apache modules or methods recommended for database-driven authentication in PHP scripts?

Database-driven authentication in PHP scripts can be achieved using modern Apache modules like mod_authn_dbd or by implementing custom authentication methods using PHP frameworks like Laravel or Symfony. These methods allow you to store user credentials securely in a database and authenticate users based on the information stored.

// Sample PHP code snippet using mod_authn_dbd for database-driven authentication

// Configure Apache to use mod_authn_dbd for database authentication
// Add the following lines to your Apache configuration file
// DBDriver mysql
// DBDParams "dbname=mydatabase user=myuser pass=mypassword"

// Sample PHP script to authenticate users using mod_authn_dbd
$dbh = new PDO('mysql:host=localhost;dbname=mydatabase', 'myuser', 'mypassword');

if (!($stmt = $dbh->prepare('SELECT password FROM users WHERE username = :username'))) {
    die("Prepare failed: (" . $dbh->errno . ") " . $dbh->error);
}

$username = $_SERVER['PHP_AUTH_USER'];

if (!$stmt->execute(array(':username' => $username))) {
    die("Execute failed: (" . $stmt->errno . ") " . $stmt->error);
}

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$row || !password_verify($_SERVER['PHP_AUTH_PW'], $row['password'])) {
    header('WWW-Authenticate: Basic realm="My Website"');
    header('HTTP/1.0 401 Unauthorized');
    die("Access denied.");
}

echo "Welcome, $username!";