function tep_get_ip_address() { static $_ip_address; if (!isset($_ip_address)) { $_ip_address = '0.0.0.0'; $ip_addresses = array(); if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { foreach (array_reverse(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])) as $x_ip) { $x_ip = trim($x_ip); if (tep_validate_ip_address($x_ip)) { $ip_addresses[] = $x_ip; } } } if (isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP'])) { $ip_addresses[] = $_SERVER['HTTP_CLIENT_IP']; } if (isset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && !empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'])) { $ip_addresses[] = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP']; } if (isset($_SERVER['HTTP_PROXY_USER']) && !empty($_SERVER['HTTP_PROXY_USER'])) { $ip_addresses[] = $_SERVER['HTTP_PROXY_USER']; } if (isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) { $ip_addresses[] = $_SERVER['REMOTE_ADDR']; } foreach ($ip_addresses as $ip) { if (!empty($ip) && tep_validate_ip_address($ip)) { $_ip_address = $ip; break; } } } return $_ip_address; }
function tep_get_ip_address() { global $HTTP_SERVER_VARS; $ip_address = null; $ip_addresses = array(); if (isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']) && !empty($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) { foreach (array_reverse(explode(',', $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) as $x_ip) { $x_ip = trim($x_ip); if (tep_validate_ip_address($x_ip)) { $ip_addresses[] = $x_ip; } } } if (isset($HTTP_SERVER_VARS['HTTP_CLIENT_IP']) && !empty($HTTP_SERVER_VARS['HTTP_CLIENT_IP'])) { $ip_addresses[] = $HTTP_SERVER_VARS['HTTP_CLIENT_IP']; } if (isset($HTTP_SERVER_VARS['HTTP_X_CLUSTER_CLIENT_IP']) && !empty($HTTP_SERVER_VARS['HTTP_X_CLUSTER_CLIENT_IP'])) { $ip_addresses[] = $HTTP_SERVER_VARS['HTTP_X_CLUSTER_CLIENT_IP']; } if (isset($HTTP_SERVER_VARS['HTTP_PROXY_USER']) && !empty($HTTP_SERVER_VARS['HTTP_PROXY_USER'])) { $ip_addresses[] = $HTTP_SERVER_VARS['HTTP_PROXY_USER']; } $ip_addresses[] = $HTTP_SERVER_VARS['REMOTE_ADDR']; foreach ($ip_addresses as $ip) { if (!empty($ip) && tep_validate_ip_address($ip)) { $ip_address = $ip; break; } } return $ip_address; }
function isValidIpAddress($ip_address) { if (function_exists('tep_validate_ip_address')) { return tep_validate_ip_address($ip_address); } if (function_exists('filter_var') && defined('FILTER_VALIDATE_IP')) { return filter_var($ip_address, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4)); } if (preg_match('/^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/', $ip_address)) { $parts = explode('.', $ip_address); foreach ($parts as $ip_parts) { if (intval($ip_parts) > 255 || intval($ip_parts) < 0) { return false; // number is not within 0-255 } } return true; } return false; }