热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php如何获取当前的ip(php获取当前路径)

导读:很多朋友问到关于php如何获取当前的ip的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览:

导读:很多朋友问到关于php如何获取当前的ip的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

本文目录一览:


  • 1、PHP怎么获取当前电脑的IP?


  • 2、如何使用php获取本机IP地址


  • 3、PHP获取客户端IP


  • 4、php怎样获取用户真实ip?


  • 5、PHP如何获取用户的真实IP?

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地址

function ip() {

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'];

}

return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';

}

以上函数取自phpcms的获取ip方法

PHP获取客户端IP

php获取客户端ip地址方法总结

用php获取客户端ip地址的方法,具体代码如下:

?php

$iipp=$_server["remote_addr"];

echo

$iipp;

?

//////////////////////////////////////////////

?php

$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;

?

///////////////////////////////////////////////

?php

function

get_real_ip(){

$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

get_real_ip();

?

///////////////////////////////////////////////

php获取ip的算法:

?php

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:".$ip

;

?

///////////////////////////////////////////////

?php

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?

获取客户端ip其实不是个简单的事儿,因为存在IP欺骗,和代理问题,所以获取客户端的IP的真实性会打折扣的,不能百分百准确。但是我们还是可以尽量写一些比较完善的获取客户端真正ip方法。使用php获取IP的方法能有很多,我简单给个例子:

?php

function getip() { 

     $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获取用户真实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();

结语:以上就是编程笔记为大家介绍的关于php如何获取当前的ip的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


推荐阅读
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • STM32代码编写STM32端不需要写关于连接MQTT服务器的代码,连接的工作交给ESP8266来做,STM32只需要通过串口接收和发送数据,间接的与服务器交互。串口三配置串口一已 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • 本文探讨了在已知最终数组尺寸不会超过5000x10的情况下,如何利用预分配和调整大小的方法来优化Numpy数组的创建过程,以提高性能并减少内存消耗。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 2008年1月,微软发布了两则安全更新公告,分别针对Windows操作系统的不同漏洞。其中一项被评为‘关键’级,另一项为‘重要’级。此次更新并未涉及Microsoft Office产品。 ... [详细]
  • IA64架构下常见编程陷阱探讨
    本文深入探讨了IA64架构中常见的一个编程错误案例,该案例揭示了当开发者试图绕过编译器的某些限制时可能遇到的问题。通过具体分析IA64架构的特点及其对全局变量处理的方式,本文旨在为开发者提供避免此类问题的有效建议。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
author-avatar
用户tznpaynnl5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有