How can the use of salts in password hashing impact the security of a PHP login system?

Using salts in password hashing can significantly improve the security of a PHP login system by adding random data to each password before hashing it. This makes it more difficult for attackers to use precomputed tables like rainbow tables to crack passwords. By using unique salts for each password, even if two users have the same password, their hashed values will be different.

// Generate a random salt for each user
$salt = bin2hex(random_bytes(16));

// Combine password and salt before hashing
$hashed_password = hash('sha256', $password . $salt);

// Store both the hashed password and the salt in the database
// When verifying the password, retrieve the salt for the user and rehash the input password with the retrieved salt