<?php
function get_client($headers) {
if (isset($headers['HTTP_X_FORWARDED_FOR'])) { return explode(', ', $headers['HTTP_X_FORWARDED_FOR'])[0]; }
else {
return $_SERVER['REMOTE_ADDR'];
}
}
// $headers = getallheaders();
$headers = array('HTTP_X_FORWARDED_FOR' => 'client, proxy1, proxy2'); echo "Client 1: " . get_client($headers) . "\n";
$headers = array('HTTP_X_FORWARDED_FOR' => 'client'); echo "Client 2: " . get_client($headers) . "\n";
echo "Client 3: " . get_client($headers) . "\n";
?>
PD9waHAKZnVuY3Rpb24gZ2V0X2NsaWVudCgkaGVhZGVycykgewogICAgaWYgKGlzc2V0KCRoZWFkZXJzWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKSkgewogICAgICAgIHJldHVybiBleHBsb2RlKCcsICcsICRoZWFkZXJzWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKVswXTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsKICAgIH0KfQoKLy8gJGhlYWRlcnMgPSBnZXRhbGxoZWFkZXJzKCk7CiRoZWFkZXJzID0gYXJyYXkoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyA9PiAnY2xpZW50LCBwcm94eTEsIHByb3h5MicpOwplY2hvICJDbGllbnQgMTogIiAuIGdldF9jbGllbnQoJGhlYWRlcnMpIC4gIlxuIjsKCiRoZWFkZXJzID0gYXJyYXkoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyA9PiAnY2xpZW50Jyk7CmVjaG8gIkNsaWVudCAyOiAiIC4gZ2V0X2NsaWVudCgkaGVhZGVycykgLiAiXG4iOwoKJGhlYWRlcnMgPSBhcnJheSgpOwplY2hvICJDbGllbnQgMzogIiAuIGdldF9jbGllbnQoJGhlYWRlcnMpIC4gIlxuIjsKPz4=