冰天雪地 |
2020-07-02 12:22 |
通过对PHP网站在使用CDN加速和未使用CDN加速时的研究,我总结出以下三点:
1、在使用CDN时,$_SERVER变量中就会含有“HTTP_X_FORWARDED_FOR”元素,并且它里面含有用户的真实IP地址,另外在“HTTP_X_FORWARDED_FOR”元素中是多个IP地址,并用英文逗号分开,第一个为用户的真实IP地址。
2、未使用CDN时,$_SERVER变量中不会出现“HTTP_X_FORWARDED_FOR”元素。
我们可以通过判断$_SERVER数组变量中是否含有“HTTP_X_FORWARDED_FOR”元素来判断,网站是否使用CDN加速,如果使用了CDN加速并返回用户的真实IP,如果没使用就返回 “REMOTE_ADDR" 元素的值。
代码:
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode(',' , $_SERVER['HTTP_X_FORWARDED_FOR']); $userip = $arr[0]; } else { $userip = $_SERVER['REMOTE_ADDR']; }
函数代码:
如果你想在PHP的文件中多次调用以上代码,我们把可以把它封装成一个函数,如下
function GetUserIP() { if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); return $arr[0]; } else { return $_SERVER['REMOTE_ADDR']; } }
函数调用方法:
GetUserIP(); |
|