diff --git a/core.php b/core.php index cae925b..f660a7d 100644 --- a/core.php +++ b/core.php @@ -1,184 +1,162 @@ block * * @param mixed $variable the variable to dump */ function dprint_r ($variable) { echo '
';
     print_r($variable);
     echo '
'; } /** * Prints human-readable information about a variable, wrapped in a
 block
  * then dies
  *
  * @param mixed $variable the variable to dump
  */
 function dieprint_r ($variable) {
     dprint_r($variable);
     die;
 };
 
 ///
 /// Client information
 ///
 
 /**
  * Returns the full header or the IP part of it
  *
  * @param string $value the header value
  * @return string the IP part
  */
 function extract_client_ip_from_header ($value) {
     if (strpos($value, ',') !== false) {
         //Header contains 'clientIP, proxyIP, anotherProxyIP'
         //The first value is so the one to return.
         //See draft-ietf-appsawg-http-forwarded-10.
         $ips = explode(',', $value, 2);
         return trim($ips[0]);
     }
 
     return $value;
 }
 
 /**
  * Gets remote IP address.
  *
  * This is intended as a drop-in replacement for $_SERVER['REMOTE_ADDR'],
  * which takes in consideration proxy values, blindly trusted.
  *
  * @return string the remote address
  */
 function get_remote_addr () {
     $candidates = [
         //Standard header provided by draft-ietf-appsawg-http-forwarded-10
         'HTTP_X_FORWARDED_FOR',
 
         //Legacy headers
         'HTTP_CLIENT_IP',
         'HTTP_FORWARDED',
         'HTTP_FORWARDED_FOR',
         'HTTP_X_CLUSTER_CLIENT_IP',
         'HTTP_X_FORWARDED',
 
         //Default header if no proxy information could be detected
         'REMOTE_ADDR',
     ];
 
     foreach ($candidates as $candidate) {
         if (array_key_exists($candidate, $_SERVER)) {
             return extract_client_ip_from_header($_SERVER[$candidate]);
         }
     }
 
     return '';
 }