【php】利用新浪api接口与php获取远程数据的方法,获取IP地址,并获取相应的IP归属地

php中文网
发布: 2016-06-23 13:32:20
原创
1212人浏览过

本文与《【servlet】javaweb中,利用新浪api接口,获取ip地址,并获取相应的ip归属地》(点击打开链接)为姊妹篇,只是后端编程语言换成了php。

做出同样的效果,打开页面,得到客户端的ip,并获取利用新浪api接口获取此ip的归属地。


可以看到,在IE6也是相当正常的。

目录结构如下,非常简单,同样就两个文件,其实如果你愿意,写成一个php文件也可以,但是显示层和逻辑业务层还是不混在一起为好吧?

立即学习PHP免费学习笔记(深入)”;

唯一值得注意的是,这两个文件打死也不能一个叫ipGet.php,ipGet.html,虽然后缀名是不同的,但前缀一定不能相同,

否则IE6不知为何无法应答这个Json


ipGetView.html与《【Servlet】Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地》(点击打开链接)中的显示层页面是完全相同,新浪api接口也是完全相同的,这里不再赘述。

SpeakingPass-打造你的专属雅思口语语料
SpeakingPass-打造你的专属雅思口语语料

使用chatGPT帮你快速备考雅思口语,提升分数

SpeakingPass-打造你的专属雅思口语语料 25
查看详情 SpeakingPass-打造你的专属雅思口语语料
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Javaweb-IP查询</title></head><body>	<p>IP:<span id="ip"></span></p>	<p>IP归属地:<span id="area"></span></p></body></html><script>	//创建Ajax对象,不同浏览器有不同的创建方法,其实本函数就是一个简单的new语句而已。  	function createXMLHttpRequest() {		var XMLHttpRequest1;		if (window.XMLHttpRequest) {			XMLHttpRequest1 = new XMLHttpRequest();		} else if (window.ActiveXObject) {			try {				XMLHttpRequest1 = new ActiveXObject("Msxml2.XMLHTTP");			} catch (e) {				XMLHttpRequest1 = new ActiveXObject("Microsoft.XMLHTTP");			}		}		return XMLHttpRequest1;	}	function ajax() {				var XMLHttpRequest1 = createXMLHttpRequest();		//指明相应页面  		var url = "ipGetDo.php";		XMLHttpRequest1.open("POST", url, true);		//这里没法解释,你所有JavaScript的请求头都这样写就对了,不会乱码  		XMLHttpRequest1.setRequestHeader("Content-Type",				"application/x-www-form-urlencoded");		XMLHttpRequest1.send(null);		//对于返回结果怎么处理的问题				XMLHttpRequest1.onreadystatechange = function() {			//这个4代表已经发送完毕之后  			if (XMLHttpRequest1.readyState == 4) {				//200代表正确收到了返回结果  				if (XMLHttpRequest1.status == 200) {					//json返回结果					var data=eval("("+XMLHttpRequest1.responseText+")");					document.getElementById("ip").innerHTML=data.ip;					document.getElementById("area").innerHTML=decodeURIComponent(data.area1)+decodeURIComponent(data.area2);				} else {					//如果不能正常接受结果,你肯定是断网,或者我的服务器关掉了。  					alert("网络连接中断!");				}			}		};	}	ajax();</script>
登录后复制
之后,ipGetDo.php中,如同《【php】登录系统与输出浏览者信息》( 点击打开链接)一样,利用${_SERVER['REMOTE_ADDR']}先获取用户的ip,然后通过curl向远程获取数据。php用curl向远程获取数据的格式如下:

<?php  $url = "需要获取数据的url"; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); $DistanceContent = curl_exec($ch); echo $DistanceContent; //$DistanceContent为获取到的数据?> 
登录后复制

因此ipGetDo.php的代码也就如下,获取到数据,直接打印出来,让ipGetView.html用Ajax获取即可。

<?php  $url = "http://ipapi.sinaapp.com/api.php?f=json&ip=${_SERVER['REMOTE_ADDR']}"; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); $DistanceContent = curl_exec($ch); echo $DistanceContent; ?> 
登录后复制

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号