如何使用PHP获取客户端及服务器端IP的封装类
本文实例讲述了PHP获取客户端及服务器端IP的封装类。分享给大家供大家参考,具体如下:
客户端IP相关的变量:
1 $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。
2 $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。
3 $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。
服务器端IP相关的变量:
1 $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。
2 $_SERVER["SERVER_ADDR"],在服务器端测试:127001(这个与httpdconf中BindAddress的设置值相关)。在客户端测试结果正确。
类如下:
class getIP{
function clientIP(){
$cIP = getenv('REMOTE_ADDR');
$cIP1 = getenv('HTTP_X_FORWARDED_FOR');
$cIP2 = getenv('HTTP_CLIENT_IP');
$cIP1 $cIP = $cIP1 : null;
$cIP2 $cIP = $cIP2 : null;
return $cIP;
}
function serverIP(){
return gethostbyname($_SERVER["SERVER_NAME"]);
}
}
$getIP = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
echo 'Client IP is ',$clientIp,'<br />';
echo 'Server IP is ',$serverIp,'<br />';
<php
function getIp()
{
$IPaddress='';
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$IPaddress = $_SERVER["HTTP_CLIENT_IP"];
} else {
$IPaddress = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$IPaddress = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$IPaddress = getenv("HTTP_CLIENT_IP");
} else {
$IPaddress = getenv("REMOTE_ADDR");
}
}
return $IPaddress;
}
echo getIp();//就可以输出用户的IP地址。
>
获取服务器端ip地址
<phpfunction serverIp(){
if(isset($_SERVER)){
if($_SERVER['SERVER_ADDR']){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=$_SERVER['LOCAL_ADDR'];
}
}else{
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
echo serverIp();
>
此方法在本地不可用。需要上传至服务器
如果在本地使用此方法 打印出来的是127001
希望对你有帮助
如果是通过客户端浏览器请求php页面,可以使用系统函数:phpinfo();
如果通过php-cli方式查看可以直接在命令行执行:php -i
php获得服务器时间,用到的工具:notepad++,步骤如下:
代码如下:
<php//以中国为时区为示例
date_default_timezone_set("PRC");
echo date("Y年-m月-d日 H:i:s");
>
说明:输出的时间格式为xxxx-xx-xx xx:xx:xx即2017-03-21 20:45:59
2将代码放到一个php文件中,以homephp为示例,放到网站目录下边,运行以后的效果:
注意事项:此代码必须在php环境下运行。
0条评论