How can a PHP developer effectively handle user authentication and authorization in an iOS app connected to a web server?

To handle user authentication and authorization in an iOS app connected to a web server, the PHP developer can implement a token-based authentication system. This involves generating a unique token for each user upon successful login, storing it in the database, and then validating the token for each subsequent request to ensure the user is authenticated and authorized to access the requested resources.

// Generate a unique token for the user upon successful login
$token = bin2hex(random_bytes(16));

// Store the token in the database along with the user ID and expiration date
$query = "INSERT INTO tokens (user_id, token, expires_at) VALUES (:user_id, :token, :expires_at)";
$stmt = $pdo->prepare($query);
$stmt->execute([
    'user_id' => $user_id,
    'token' => $token,
    'expires_at' => date('Y-m-d H:i:s', strtotime('+1 day'))
]);

// Validate the token for each request to ensure the user is authenticated and authorized
$token = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
$query = "SELECT user_id FROM tokens WHERE token = :token AND expires_at > NOW()";
$stmt = $pdo->prepare($query);
$stmt->execute(['token' => $token]);
$user_id = $stmt->fetchColumn();

if (!$user_id) {
    // Handle unauthorized access
    http_response_code(401);
    exit();
}

// User is authenticated and authorized, proceed with the request