[ Index ] |
|
Code source de LifeType 1.2.4 |
1 <?php 2 3 4 5 6 /** 7 * \ingroup Net 8 * 9 * Basic class that will return the real IP address of a request. In the future this class 10 * will be improved to return other things such as the user agent, content type, etc. 11 */ 12 class Client 13 { 14 15 /** 16 * Gets the "true" IP address of the current user 17 * 18 * @return string the ip of the user 19 */ 20 function getIp() 21 { 22 global $REMOTE_ADDR; 23 global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED; 24 global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM; 25 global $HTTP_SERVER_VARS, $HTTP_ENV_VARS; 26 27 // Get some server/environment variables values 28 if (empty($REMOTE_ADDR)) { 29 if (!empty($_SERVER) && isset($_SERVER['REMOTE_ADDR'])) { 30 $REMOTE_ADDR = $_SERVER['REMOTE_ADDR']; 31 } 32 else if (!empty($_ENV) && isset($_ENV['REMOTE_ADDR'])) { 33 $REMOTE_ADDR = $_ENV['REMOTE_ADDR']; 34 } 35 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['REMOTE_ADDR'])) { 36 $REMOTE_ADDR = $HTTP_SERVER_VARS['REMOTE_ADDR']; 37 } 38 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['REMOTE_ADDR'])) { 39 $REMOTE_ADDR = $HTTP_ENV_VARS['REMOTE_ADDR']; 40 } 41 else if (@getenv('REMOTE_ADDR')) { 42 $REMOTE_ADDR = getenv('REMOTE_ADDR'); 43 } 44 } // end if 45 if (empty($HTTP_X_FORWARDED_FOR)) { 46 if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 47 $HTTP_X_FORWARDED_FOR = $_SERVER['HTTP_X_FORWARDED_FOR']; 48 } 49 else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED_FOR'])) { 50 $HTTP_X_FORWARDED_FOR = $_ENV['HTTP_X_FORWARDED_FOR']; 51 } 52 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) { 53 $HTTP_X_FORWARDED_FOR = $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']; 54 } 55 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'])) { 56 $HTTP_X_FORWARDED_FOR = $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR']; 57 } 58 else if (@getenv('HTTP_X_FORWARDED_FOR')) { 59 $HTTP_X_FORWARDED_FOR = getenv('HTTP_X_FORWARDED_FOR'); 60 } 61 } // end if 62 if (empty($HTTP_X_FORWARDED)) { 63 if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED'])) { 64 $HTTP_X_FORWARDED = $_SERVER['HTTP_X_FORWARDED']; 65 } 66 else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED'])) { 67 $HTTP_X_FORWARDED = $_ENV['HTTP_X_FORWARDED']; 68 } 69 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED'])) { 70 $HTTP_X_FORWARDED = $HTTP_SERVER_VARS['HTTP_X_FORWARDED']; 71 } 72 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED'])) { 73 $HTTP_X_FORWARDED = $HTTP_ENV_VARS['HTTP_X_FORWARDED']; 74 } 75 else if (@getenv('HTTP_X_FORWARDED')) { 76 $HTTP_X_FORWARDED = getenv('HTTP_X_FORWARDED'); 77 } 78 } // end if 79 if (empty($HTTP_FORWARDED_FOR)) { 80 if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED_FOR'])) { 81 $HTTP_FORWARDED_FOR = $_SERVER['HTTP_FORWARDED_FOR']; 82 } 83 else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED_FOR'])) { 84 $HTTP_FORWARDED_FOR = $_ENV['HTTP_FORWARDED_FOR']; 85 } 86 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'])) { 87 $HTTP_FORWARDED_FOR = $HTTP_SERVER_VARS['HTTP_FORWARDED_FOR']; 88 } 89 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED_FOR'])) { 90 $HTTP_FORWARDED_FOR = $HTTP_ENV_VARS['HTTP_FORWARDED_FOR']; 91 } 92 else if (@getenv('HTTP_FORWARDED_FOR')) { 93 $HTTP_FORWARDED_FOR = getenv('HTTP_FORWARDED_FOR'); 94 } 95 } // end if 96 if (empty($HTTP_FORWARDED)) { 97 if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED'])) { 98 $HTTP_FORWARDED = $_SERVER['HTTP_FORWARDED']; 99 } 100 else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED'])) { 101 $HTTP_FORWARDED = $_ENV['HTTP_FORWARDED']; 102 } 103 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED'])) { 104 $HTTP_FORWARDED = $HTTP_SERVER_VARS['HTTP_FORWARDED']; 105 } 106 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED'])) { 107 $HTTP_FORWARDED = $HTTP_ENV_VARS['HTTP_FORWARDED']; 108 } 109 else if (@getenv('HTTP_FORWARDED')) { 110 $HTTP_FORWARDED = getenv('HTTP_FORWARDED'); 111 } 112 } // end if 113 if (empty($HTTP_VIA)) { 114 if (!empty($_SERVER) && isset($_SERVER['HTTP_VIA'])) { 115 $HTTP_VIA = $_SERVER['HTTP_VIA']; 116 } 117 else if (!empty($_ENV) && isset($_ENV['HTTP_VIA'])) { 118 $HTTP_VIA = $_ENV['HTTP_VIA']; 119 } 120 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_VIA'])) { 121 $HTTP_VIA = $HTTP_SERVER_VARS['HTTP_VIA']; 122 } 123 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_VIA'])) { 124 $HTTP_VIA = $HTTP_ENV_VARS['HTTP_VIA']; 125 } 126 else if (@getenv('HTTP_VIA')) { 127 $HTTP_VIA = getenv('HTTP_VIA'); 128 } 129 } // end if 130 if (empty($HTTP_X_COMING_FROM)) { 131 if (!empty($_SERVER) && isset($_SERVER['HTTP_X_COMING_FROM'])) { 132 $HTTP_X_COMING_FROM = $_SERVER['HTTP_X_COMING_FROM']; 133 } 134 else if (!empty($_ENV) && isset($_ENV['HTTP_X_COMING_FROM'])) { 135 $HTTP_X_COMING_FROM = $_ENV['HTTP_X_COMING_FROM']; 136 } 137 else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_COMING_FROM'])) { 138 $HTTP_X_COMING_FROM = $HTTP_SERVER_VARS['HTTP_X_COMING_FROM']; 139 } 140 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_COMING_FROM'])) { 141 $HTTP_X_COMING_FROM = $HTTP_ENV_VARS['HTTP_X_COMING_FROM']; 142 } 143 else if (@getenv('HTTP_X_COMING_FROM')) { 144 $HTTP_X_COMING_FROM = getenv('HTTP_X_COMING_FROM'); 145 } 146 } // end if 147 if (empty($HTTP_COMING_FROM)) { 148 if (!empty($_SERVER) && isset($_SERVER['HTTP_COMING_FROM'])) { 149 $HTTP_COMING_FROM = $_SERVER['HTTP_COMING_FROM']; 150 } 151 else if (!empty($_ENV) && isset($_ENV['HTTP_COMING_FROM'])) { 152 $HTTP_COMING_FROM = $_ENV['HTTP_COMING_FROM']; 153 } 154 else if (!empty($HTTP_COMING_FROM) && isset($HTTP_SERVER_VARS['HTTP_COMING_FROM'])) { 155 $HTTP_COMING_FROM = $HTTP_SERVER_VARS['HTTP_COMING_FROM']; 156 } 157 else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_COMING_FROM'])) { 158 $HTTP_COMING_FROM = $HTTP_ENV_VARS['HTTP_COMING_FROM']; 159 } 160 else if (@getenv('HTTP_COMING_FROM')) { 161 $HTTP_COMING_FROM = getenv('HTTP_COMING_FROM'); 162 } 163 } // end if 164 165 // Gets the proxy ip sent by the user 166 $proxy_ip = ''; 167 if (!empty($HTTP_X_FORWARDED_FOR)) { 168 $proxy_ip = $HTTP_X_FORWARDED_FOR; 169 } else if (!empty($HTTP_X_FORWARDED)) { 170 $proxy_ip = $HTTP_X_FORWARDED; 171 } else if (!empty($HTTP_FORWARDED_FOR)) { 172 $proxy_ip = $HTTP_FORWARDED_FOR; 173 } else if (!empty($HTTP_FORWARDED)) { 174 $proxy_ip = $HTTP_FORWARDED; 175 } else if (!empty($HTTP_VIA)) { 176 $proxy_ip = $HTTP_VIA; 177 } else if (!empty($HTTP_X_COMING_FROM)) { 178 $proxy_ip = $HTTP_X_COMING_FROM; 179 } else if (!empty($HTTP_COMING_FROM)) { 180 $proxy_ip = $HTTP_COMING_FROM; 181 } // end if... else if... 182 183 // Returns the true IP if it has been found, else FALSE 184 if(!empty($REMOTE_ADDR)) 185 return $REMOTE_ADDR; 186 else 187 return FALSE; 188 189 // NOTE: the proxy addresses can be faked - shouldn't be depended on 190 // for security - perhaps plugins like karma, et al. might want to use 191 // this value, but all ip-based-blocking need the REMOTE_ADDR 192 /* 193 if (empty($proxy_ip)) { 194 // True IP without proxy 195 return $direct_ip; 196 } else { 197 $is_ip = ereg('^([0-9]{1,3}\.){3,3}[0-9]{1,3}', $proxy_ip, $regs); 198 if ($is_ip && (count($regs) > 0)) { 199 // True IP behind a proxy 200 return $regs[0]; 201 } else { 202 // Can't define IP: there is a proxy but we don't have 203 // information about the true IP 204 return FALSE; 205 } 206 } // end if... else... 207 */ 208 } // end of the 'PMA_getIp()' function 209 210 } 211 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Mon Nov 26 21:04:15 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |