What are common pitfalls to avoid when implementing user authentication in PHP for database access?

Common pitfalls to avoid when implementing user authentication in PHP for database access include not hashing passwords securely, not protecting against SQL injection attacks, and not using prepared statements. To address these issues, always hash passwords using a strong hashing algorithm like password_hash(), sanitize user input to prevent SQL injection, and use prepared statements to safely execute SQL queries.

// Hashing passwords securely using password_hash()
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

// Protecting against SQL injection attacks using mysqli_real_escape_string()
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

// Using prepared statements to safely execute SQL queries
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();