How can PHP developers effectively manage timestamps for IP blocking in guestbooks?

To effectively manage timestamps for IP blocking in guestbooks, PHP developers can store the timestamp of when an IP address was blocked in a database along with the IP address. When a new guestbook entry is submitted, the script can check the database to see if the IP address is blocked and if the timestamp has expired. If the timestamp has expired, the IP address can be unblocked, otherwise, the entry can be rejected.

// Connect to database
$pdo = new PDO('mysql:host=localhost;dbname=guestbook', 'username', 'password');

// Check if IP address is blocked
$ip = $_SERVER['REMOTE_ADDR'];
$stmt = $pdo->prepare("SELECT * FROM blocked_ips WHERE ip_address = :ip");
$stmt->bindParam(':ip', $ip);
$stmt->execute();
$blocked_ip = $stmt->fetch();

if($blocked_ip) {
    // Check if timestamp has expired (e.g. 24 hours)
    $timestamp = strtotime($blocked_ip['timestamp']);
    $current_time = time();
    $expiration_time = $timestamp + (24 * 60 * 60);

    if($current_time > $expiration_time) {
        // Unblock IP address
        $stmt = $pdo->prepare("DELETE FROM blocked_ips WHERE ip_address = :ip");
        $stmt->bindParam(':ip', $ip);
        $stmt->execute();
    } else {
        die("Your IP address has been blocked. Please try again later.");
    }
}

// Process guestbook entry
// Code to insert entry into database goes here