您所在的位置: 首页>>读书频道>>设计开发>>网站开发>>

实例288:利用IP地址查找主机所在地

http://book.51cto.com  2007-10-12 13:15  明日科技  人民邮电出版社  我要评论(0)
  • 摘要:《PHP程序开发范例宝典》第十章介绍了字符串的处理技术。本文是字符串的应用及处理实例利用IP地址查找主机所在地.
  • 标签:IP地址  主机  PHP  PHP程序开发范例宝典

实例288:利用IP地址查找主机所在地

这是一个字符串匹配查找的实例
实例位置:光盘\mingrisoft\10\288

实例说明

PHP项目开发过程中,可以通过变量$REMOTE_ADDR获取客户机的IP地址,但并不能判断该IP所在地。为了解决上述问题,可以先将该IP转换成其对应的数字,然后根据该数值查找IP所在地。
运行本实例,如图10.26所示,首先输入要查找的IP地址,单击“转换”按钮后,会在下面的文本框中显示对应的数字。

图10.26  利用IP地址查找主机所在地

技术要点

实现本实例,首先需要验证输入的IP地址是否合法,如果合法,再将其转换为对应的数值。验证IP地址是否合法可以通过正则表达式实现。

IP地址使用4位地址定位设备,它采用点分十进制数的格式“xxx.xxx.xxx.xxx”,例如192.168.1.66。因此,验证IP地址是否合法的正则表达式如下:
/(\d+).(\d+).(\d+).(\d+)/
将IP地址转换为对应的数值可以应用以下公式实现:
P1*255*255*255+P2*255*255+P3*255+P4*1
在上面的公式中,P1代表IP地址第1段的数值,P2代表IP地址第2段的数值,P3代表IP地址第3段的数值,P4代表IP地址第4段的数值。

实现过程

(1)编写将IP地址转换为对应数值的JavaScript自定义函数convert(),该函数只有一个参数ip,用于指定IP地址,返回值为IP地址对应的数值。代码如下:

<script language="javascript">
function convert(ip){
ip=ip.split(".");
vip=ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1;
return vip;
}
</script>
(2)编写JavaScript自定义函数deal(),用于验证用户输入的IP地址是否合法,如果合法,再将其转换为对应的数值,并显示在相应的文本框中。具体代码如下:
<script language="javascript">
function deal(myform){
var ip=form1.ip.value;
objExp=/(\d+).(\d+).(\d+).(\d+)/;
if(ip==""){
alert("请输入IP地址!");form1.ip.focus();return;
}
if(objExp.test(ip)){
myform.ipNum.value=convert(ip);
}else{
alert("您输入的IP地址不合法!");form1.ip.focus();return;
}
}
</script>
(3)在页面的合适位置添加“转换”按钮,在该按钮的onClick事件中调用deal()函数,将IP地址转换为相对应的数值。代码如下:
<input name="Button" type="button" class="btn_grey" onClick="deal(form1)"
value="转换" />

举一反三

根据本实例,读者可以:
用于限制指定范围内的IP地址投票页面中。
实现获取访问者IP所属地。

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
PHP+APACHE+MYSQL下载汇总
PHP开发应用手册
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有