PHP如何获取内网IP

PHP如何获取内网IP,第1张

进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl

执行phpize生成编译文件,phpize在PHP安装目录的bin目录下

/usr/local/php5/bin/phpize

运行时,可能会报错:Cannot find autoconf Please check your autoconf installation and

the $PHP_AUTOCONF

environment variable is set correctly and then rerun this

script,需要安装autoconf:

yum install autoconf(RedHat或者CentOS)、apt-get install

autoconf(Ubuntu Linux)

/usr/local/php5/bin/php -v

执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,

这里会报错,可以根据错误信息去排查!

php获取客户端IP地址的几种方法,阅读php获取客户端IP地址的几种方法,$iipp=$_SERVER[

$iipp=$_SERVER["REMOTE_ADDR"];

echo $iipp;

>

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

$user_IP = ($_SERVER[">

这个是没办法获得的,这个涉及到路由策略,它不可能把内网IP提供给你,它总是打开一个端口让你通过这个端口跟内网机器通讯,你看到的,自始至终都只是路由的IP及端口。它不会提供你内网机器的IP及端口

php获取用户真实ip的方法:

方法1:

//获取REMOTE_ADDR属性,直接可以得到ip

$ip = $_SERVER["REMOTE_ADDR"];

echo $ip;

方法2:

//从Server中获取>

1确认执行该PHP脚本的系统具备修改服务器IP/子网掩码/网关的权限

2确认你的PHP运行执行shell_exec的函数,这个函数在安全模式下是被屏蔽的

3确认你在shell_exec里面执行的系统命令行是正确的

简单的例子:

$

vi

testphp

#!/usr/bin/php

<php

$rsl

=

shell_exec("fconfig

eth0

19216812

netmask

2552552550");

//改ip和子网掩码

$rsl2

=

shell_exec("route

add

default

gw

19216811");

//设置网关

echo

$rsl"\n"$rsl2;//看看返回的结果

>

$

chmod

755

testphp

--

给脚本增加执行的权限

$

/testphp

参考其他函数:

exec()

system()

等等

windows下怎么做

我又没钱买windows我怎么知道!

二、子网掩码

(1)子网TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。

因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的思路集中在:如何减少网络地址。于是IP网络地址的多重复用技术应运而生。

通过复用技术,使若干物理网络共享同一IP网络地址,无疑将减少网络地址数。

子网编址(subnet addressing)技术,又叫子网寻径(subnetrouting),英文简称subnetting,是最广泛使用的IP网络地址复用方式,目前已经标准化,并成为IP地址模式的一部分。

一般的,32位的IP地址分为两部分,即网络号和主机号,我们分别把他们叫做IP地址的“网间网部分”和“本地部分”。子网编址技术将本地部分进一步划分为“物理网络”部分和“主机”部分,如图:

网间网部分物理网络主机

|←网间网部分→|←————本地部分—————→|

其中“物理网络”用于标识同一IP网络地址下的不同物理网络,既是“子网”。

(2)子网掩码IP协议标准规定:每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网间网部分和物理网络号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。例如位模式:

11111111 11111111 11111111 00000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。这种位模式叫做子网模(subnet mask)或“子网掩码”。

为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如B类地址子网掩码(11111111 11111111 11111111 00000000)为:

255255250 IP协议关于子网掩码的定义提供一种有趣的灵活性,允许子网掩码中的“0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码。像25525525564和255255255160等一类的子网掩码不推荐使用。

(3)子网掩码与IP地址子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。

例如:有一个C类地址为:

192.9.200.13其缺省的子网掩码为:

255.255.255.0则它的网络号和主机号可按如下方法得到:

①将IP地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101

②将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000

③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111 00000000 11000000 00001001 11001000 00000000结果为19292000,即网络号为19292000。

④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分11000000 00001001 11001000 00001101 AND 00000000 00000000 00000000 11111111 00000000 00000000 00000000 00001101结果为00013,即主机号为13。

(4)子网掩码与IP地址子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。

例如:有一个C类地址为:

192.9.200.13 其缺省的子网掩码为:

255.255.255.0 则它的网络号和主机号可按如下方法得到:

①将IP地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101

②将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000

③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111 00000000 11000000 00001001 11001000 00000000结果为19292000,

即网络号为192.9.200.0。

④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分11000000 00001001 11001000 00001101 AND 00000000 00000000 00000000 11111111 00000000 00000000 00000000 00001101 结果为00013,即主机号为13。

三、子网划分与实例根据以上分析,建议按以下步骤和实例定义子网掩码。

1、将要划分的子网数目转换为2的m次方。如要分8个子网,8=23。

2、取上述要划分子网数的2的m次方的幂。如23,即m=3。

3、将上一步确定的幂m按高序占用主机地址m位后转换为十进制。如m为3 则是11100000,转换为十进制为224,即为最终确定的子网掩码。如果是C类网,则子网掩码为255255255224;如果是B类网,则子网掩码为2552552240;如果是C类网,则子网掩码为25522400。

在这里,子网个数与占用主机地址位数有如下等式成立:2m=n。其中,m表示占用主机地址的位数;n表示划分的子网个数。根据这些原则,将一个C类网络分成4个子网。若我们用的网络号为192.9.200,则该C类网内的主机IP地址就是19292001~1929200254(因为全“0”和全“1”的主机地址有特殊含义,不作为有效的IP地址),现将网络划分为4个部分,按照以上步骤:

4=22,取22的幂,即2,则二进制为11,占用主机地址的高序位即为11000000,转换为十进制为192。这样就可确定该子网掩码为:1929200192,4个子网的IP地址范围分别为:

二进制十进制

① 11000000 00001001 11001000 00000001 11000000 00001001 11001000 00111110 192.9.200.1

192.9.200.62

② 11000000 00001001 11001000 01000001 11000000 00001001 11001000 01111110 192.9.200.65

192.9.200.126

③ 11000000 00001001 11001000 10000001 11000000 00001001 11001000 10111110 192.9.200.129

192.9.200.190

④ 11000000 00001001 11001000 11000001 11000000 00001001 11001000 11111110 192.9.200.193

192.9.200.254

在此列出A、B、C三类网络子网数目与子网掩码的转换表,以供参考。

A类:

子网数目 占用位数 子网掩码 子网中主机数

2 1 255.128.0.0 8,388,606

4 2 255.192.0.0 4,194,302

8 3 255.224.0.0 2,097,150

16 4 255.240.0.0 1,048,574

32 5 255.248.0.0 524,286

64 6 255.252.0.0 262,142

128 7 255.254.0.0 131,070

128 8 255.255.0.0 65,534

B类:

子网数目 占用位数 子网掩码 子网中主机数

2 1 255.255.128.0 32,766

4 2 255.255.192.0 16,382

8 3 255.255.224.0 8,190

16 4 255.255.240.0 4,094

32 5 255.255.248.0 2,046

64 6 255.255.252.0 1,022

128 7 255.255.254.0 510

256 8 255.255.255.0 254

C类:

子网数目 占用位数 子网掩码 子网中主机数

2 1 255.255.255.128 126

4 2 255.255.255.192 62

8 3 255.255.255.224 30

16 4 255.255.255.240 14

32 5 255.255.255.248 6

64 6 255.255.255.252 2

这个跟你的路由设置和访问方式有关。

假设你的服务端在1010501,公网IP都是8888。

假设你的客户端在 101050100-199,出口公网IP是4444

如果你的客户端以公网的形式访问,如>

以上就是关于PHP如何获取内网IP全部的内容,包括:PHP如何获取内网IP、php 获取到ip地址是0.0.0.0、PHP怎么获取IP的子网等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9306020.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存