【php】利用新浪api介面與php擷取遠端資料的方法,擷取IP地址,並擷取相應的IP歸屬地

來源:互聯網
上載者:User

標籤:php   ip   curl   ajax   api   

本文與《【Servlet】Javaweb中,利用新浪api介面,擷取IP地址,並擷取相應的IP歸屬地》(點擊開啟連結)為姊妹篇,只是後端程式設計語言換成了php。

做出同樣的效果,開啟頁面,得到用戶端的ip,並擷取利用新浪api介面擷取此ip的歸屬地。


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

目錄結構如下,非常簡單,同樣就兩個檔案,其實如果你願意,寫成一個php檔案也可以,但是顯示層和邏輯業務層還是不混在一起為好吧?

唯一值得注意的是,這兩個檔案打死也不能一個叫ipGet.php,ipGet.html,雖然尾碼名是不同的,但首碼一定不能相同,

否則IE6不知為何無法應答這個Json


ipGetView.html與《【Servlet】Javaweb中,利用新浪api介面,擷取IP地址,並擷取相應的IP歸屬地》(點擊開啟連結)中的顯示層頁面是完全相同,新浪api介面也是完全相同的,這裡不再贅述。

<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】利用新浪api介面與php擷取遠端資料的方法,擷取IP地址,並擷取相應的IP歸屬地

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.