| | 108 | // Correct comment's ip address with X-Forwarded-For http header if you are behind a proxy or load balancer. |
| | 109 | if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) { |
| | 110 | // this one can have multiple IPs separated by a coma |
| | 111 | $_SERVER['HTTP_X_FORWARDED_FOR'] = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); |
| | 112 | $_SERVER['HTTP_X_FORWARDED_FOR'] = $_SERVER['HTTP_X_FORWARDED_FOR'][0]; |
| | 113 | } |
| | 114 | |
| | 115 | if ( function_exists('filter_var') ) { |
| | 116 | if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE) ) |
| | 117 | $_SERVER['REMOTE_ADDR'] = filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); |
| | 118 | elseif ( isset($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE) ) |
| | 119 | $_SERVER['REMOTE_ADDR'] = filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); |
| | 120 | } else { |
| | 121 | if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) |
| | 122 | $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; |
| | 123 | elseif ( isset($_SERVER['HTTP_X_REAL_IP']) ) |
| | 124 | $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; |
| | 125 | } |
| | 126 | |
| | 127 | |