Daher:
$visitor_server = $_SERVER["SERVER_NAME"];
Der Servername kommt aus dem DNS und sollte eigentlich sicher sein.
Das mag landläufige Meinung sein, "landläufig" ist hier aber der "Holzweg".
$_SERVER['SERVER_NAME'] == Name, welcher in der Serverkonfiguration hinterlegt ist. Kann der beim Start des Apache Webservers nicht in eine IP-Adresse aufgelöst werden sich nur eine Warnung bzw. Notiz im error-log und/oder in der Konsole finden. Das war es dann auch.
$_SERVER['HTTP_HOST'] == Name, des Servers, wie er vom Client im Request-Header an den Server geschickt wird. Selbst bei einem normalen Client kann der falsch sein, denn ich kann
192.168.0.111 www.example.com
in die Hosts-Datei schreiben (oder meinem Client erzählen 192.168.0.111:80 sei der Proxy oder ihm vormachen, dass sei die gecachte IP, ..., oder ich nehme für den Spaß gleich netcat)
Mit DNS hat das alles nichts zu tun. $_SERVER["SERVER_NAME"] sogar überhaupt nichts. Ob man dem Apache auch völligen Unsinn als HTTP_HOST unterschieben kann habe ich noch nicht getestet. Wozu auch.