热门标签 | 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的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


推荐阅读
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • PHP中去除换行符的多种方法及应用场景
    本文将详细介绍在PHP中去除换行符的各种方法,并结合实际应用场景进行说明。通过本文,您将了解如何根据不同操作系统的特点,选择最合适的换行符处理方式。 ... [详细]
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社区 版权所有