㈠ php如何获得访问局域网内的服务器的用户的真实ip,即外网ip。
/**
* 获取客户端IP地址
*/
static public function getClientIP() {
static $ip = NULL;
if ( $ip !== NULL )
return $ip;
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
$arr = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );
$pos = array_search( 'unknown', $arr );
if ( false !== $pos )
unset( $arr[$pos] );
$ip = trim( $arr[0] );
} elseif ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
$ip = ( false !== ip2long( $ip ) ) ? $ip : '';
return $ip;
}
㈡ 用php如何获得用户ip地址
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
//方法2:
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] :
$_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
echo $user_IP;
//方法3:
function getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo getRealIp();
//方法4:
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
echo $ip ;
//方法5:
if(getenv('HTTP_CLIENT_IP')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$onlineip = getenv('REMOTE_ADDR');
} else {
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo $onlineip;
㈢ php怎样获取访问者的ipv6地址
如果你的系统是vista,和设置ipv4地址的方法一样。
如果是xp,打开一个dos窗口,照下面方法输入。
C:\>netsh
netsh>interface ipv6
netsh interface ipv6>add address "本地连接" fe80:a520:1314::1
/* 设定固定的IPv6地址,“本地连接”是指你的机上建立的某个连接的名称 */
netsh interface ipv6>add dns "本地连接" 2001:251:e101:0::2
/* 设定IPv6 DNS地址 */
㈣ php怎样获取用户真实ip
获取客户端ip其实不是个简单的事儿,因为存在IP欺骗,和代理问题,所以获取客户端的IP的真实性会打折扣的,不能百分百准确。但是我们还是可以尽量写一些比较完善的获取客户端真正ip方法。使用php获取IP的方法能有很多,我简单给个例子:
<?php
functiongetip(){
$unknown='unknown';
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],$unknown)){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],$unknown)){
$ip=$_SERVER['REMOTE_ADDR'];
}
/**
*处理多层代理的情况
*或者使用正则方式:$ip=preg_match("/[d.]{7,15}/",$ip,$matches)?$matches[0]:$unknown;
*/
if(false!==strpos($ip,','))$ip=reset(explode(',',$ip));
return$ip;
}
?>
1、没有使用代理的情况
REMOTE_ADDR = 客户端IP
HTTP_X_FORWARDED_FOR = 没数值或不显示
2、使用透明代理的情况
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215)
这类代理服务器还是将客户端真实的IP发送给了访问对象,无法达到隐藏真实身份的目的.
3、使用普通的匿名代理
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215)
这种情况下隐藏了客户端的真实IP,但是向访问对象透露了客户端是使用代理服务器访问它们的.
4、使用欺骗性代理服务器
REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215)
这种情况下同样透露了客户端是使用了代理服务器,但编造了一个虚假的随机IP(220.4.251.159)代替客户端的真实IP来欺骗它.
5、使用高级匿名代理服务器
REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 没数值或不显示,也可能是unknown
㈤ 利用php怎么获取用户ip
<?php//方法1:
$ip=$_SERVER["REMOTE_ADDR"];
echo$ip;
//方法2:
$user_IP=($_SERVER["HTTP_VIA"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:$_SERVER["REMOTE_ADDR"];
$user_IP=($user_IP)?$user_IP:$_SERVER["REMOTE_ADDR"];
echo$user_IP;
//方法3:
functiongetRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip=$_SERVER["HTTP_CLIENT_IP"];
}
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ips=explode(",",$_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip){array_unshift($ips,$ip);$ip=FALSE;}
for($i=0;$i<count($ips);$i++){
if(!eregi("^(10│172.16│192.168).",$ips[$i])){
$ip=$ips[$i];
break;
}
}
}
return($ip?$ip:$_SERVER['REMOTE_ADDR']);
}
echogetRealIp();
//方法4:
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip=$HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif(getenv("HTTP_X_FORWARDED_FOR"))
{
$ip=getenv("HTTP_X_FORWARDED_FOR");
}
elseif(getenv("HTTP_CLIENT_IP"))
{
$ip=getenv("HTTP_CLIENT_IP");
}
elseif(getenv("REMOTE_ADDR"))
{
$ip=getenv("REMOTE_ADDR");
}
else
{
$ip="Unknown";
}
echo$ip;
//方法5:
if(getenv('HTTP_CLIENT_IP')){
$onlineip=getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$onlineip=getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('REMOTE_ADDR')){
$onlineip=getenv('REMOTE_ADDR');
}else{
$onlineip=$HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo$onlineip;
㈥ php获取用户ip和地区
functiongetIp(){
if(getenv("HTTP_CLIENT_IP")&&strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))$ip=getenv("HTTP_CLIENT_IP");
elseif(getenv("HTTP_X_FORWARDED_FOR")&&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown"))$ip=getenv("HTTP_X_FORWARDED_FOR");
elseif(getenv("REMOTE_ADDR")&&strcasecmp(getenv("REMOTE_ADDR"),"unknown"))$ip=getenv("REMOTE_ADDR");
elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],"unknown"))$ip=$_SERVER['REMOTE_ADDR'];
else$ip="unknown";
return$ip;
}
使用这个可以获取id,至于要把ip转换从真实地址可以使用新浪有道提供的api或者用本地的QQWry.Dat文件这个文件自己去下载,不过要经常更新
㈦ php中怎么获取访问当前页面电脑的IP地址
本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:
<?php
$bIp = gethostbyname($_ENV['COMPUTERNAME']); //获取本机的局域网IP
echo "本机IP:",$bIp,"\n";
echo "本机主机名:",gethostbyaddr($bIp),"\n\n\n"; //gethostbyaddr 函数可以根据局域网IP获取主机名
//默认网关IP
list($ipd1,$ipd2,$ipd3) = explode('.',$bIp);
$mask = $ipd1 . "." . $ipd2 . "." . $ipd3 ;
exec('arp -a',$aIp); //获取局域网中的其他IP
foreach( $aIp as $ipv) {
if(strpos($ipv,'接口') !== false) {//一下显示的IP是否是当前局域网中的 而不是其他的类型 可以在cmd下试一下命令
$bool = false;
preg_match('/(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/',$ipv,$arr);
if(strcmp($arr[0],$bIp) == 0) {
$bool = true;
}
} else {
if($bool) {
$str = preg_replace('/\s+/', '|', $ipv);
$sArr = explode('|',$str);
if($sArr[1] == 'Internet' || empty($sArr[1])) {
continue;
}
//去除默认网关
if(strcmp($mask . ".1", $sArr[1]) == 0) {
continue;
}
//去除同网关下255的IP
if(strcmp($mask . ".255", $sArr[1]) == 0) {
continue;
}
//去除组播IP
list($cIp) = explode('.', $sArr[1]);
if($cIp >= 224 && $cIp <= 239) {
continue;
}
echo "IP地址:|",$sArr[1],"|\n";
echo "MAC地址:",$sArr[2],"\n";
echo "主机名:",gethostbyaddr($sArr[1]),"\n";
echo "\n\n";
}
}
}
㈧ php如何获取当前登录者的IP
$_SERVER['REMOTE_ADDR'] $_SERVER数组 打印它,里面的REMOTE_ADDR属性就是你想要的IP
㈨ php 怎么获取访问网站的ip
分两种情况
1、没有反向代理的时候,直接读取 $_SERVER['REMOTE_ADDR'] 。
2、有反向代理的情况下,则反向代理服务需做如下设置
proxy_set_headerX-Forward-For$remote_addr;
后端php服务则直接读取 $_SERVER['X-Forward-For'] 即可。
㈩ PHP如何获取用户的真实IP
php获取用户真实ip的方法:
方法1:
//获取REMOTE_ADDR属性,直接可以得到ip
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
方法2:
//从Server中获取HTTP_VIA,如果获取到就用HTTP_X_FORWARDED_FOR的值替换,如果获取不到就取REMOTE_ADDR的值。
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] :
$_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
echo $user_IP;
方法3:
function getRealIp()
{
$ip=false; //初始化ip为false
if(!empty($_SERVER["HTTP_CLIENT_IP"])){ //如果HTTP_CLIENT_IP不为空
$ip = $_SERVER["HTTP_CLIENT_IP"]; //获取HTTP_CLIENT_IP的值
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //如果HTTP_X_FORWARDED_FOR不为空
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
//把HTTP_X_FORWARDED_FOR的值用,分割后存放数组ips
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }//遍历处理
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i]; //获得真实ip
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo getRealIp();