5 minutes old) $currentTime = time(); $activeTokens = []; foreach ($tokens as $token => $data) { if (($currentTime - $data['created_at']) <= 300) { // 5 minutes if (!isset($data['used']) || !$data['used']) { $activeTokens[$token] = $data; } } } // Generate new random token $newToken = bin2hex(random_bytes(16)); // 32 hex chars $activeTokens[$newToken] = [ 'created_at' => $currentTime, 'used' => false ]; // Save back file_put_contents($tokensFile, json_decode('{}')); // clear out file first securely? file_put_contents($tokensFile, json_encode($activeTokens, JSON_PRETTY_PRINT)); echo json_encode([ 'status' => 'success', 'token' => $newToken, 'expires_in' => 300 ]); ?>