日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

“最新”手机号码归属地库制作

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “最新”手机号码归属地库制作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目的

通過本文你可以自己動手制作最新的號碼歸屬地庫

所需技術

ü???????? html

ü???????? jsajax

ü???????? php(jsp)

ü???????? mysq

基本思路

利用http://api.showji.com提供的查詢接口,前臺頁面(querymobile.html)不斷查詢獲歸屬地數據,再提交到后臺處理頁面(deal.php),把數據保存至數據庫(phonenumber_db)(tb_number)

實現步驟

1.?????? 前臺html頁面

一個開始號碼輸入框、一個【開始查詢】按鈕,還有一些顯示查詢結果的span標簽,很簡單。如下圖:

部分源碼如下:

…………

?起始號碼(前七位):<input type="text" name="m" value="1300000" " id="m" />

<input type="button" value="開始查詢" id="btnQuery" οnclick="btnQuery(this)" />

?

<ul>

??? <li>所查號碼:<span id="txtMobile"></span></li>

??? <li>歸屬省份:<span id="txtProvince"></span></li>

??? <li>歸屬城市:<span id="txtCity"></span></li>

??? <li>城市區號:<span id="txtAreaCode"></span></li>

??? <li>城市郵編:<span id="txtPostCode"></span></li>

??? <li>卡 類 型:<span id="txtCard"></span></li>

</ul>

…………

?

2.?????? 前臺js

js在這里很重要,代碼較多,但都是基本的東西,有注釋,應該好理解

/** **********全局變量定義************** */

// 開始號碼(注:前七位手機號碼即可)

var startNumber = 1300000;

// 是否停止

var isFinish = false;

/** ************************ */

// 根據元素id獲取元素

// lxq 2011/09/11

/** ************************ */

function $(objID) {

??? return document.getElementById(objID);

}

?

/** ************************ */

// 號碼查詢后,執行的回調函數

// lxq 2011/09/11

/** ************************ */

function querycallback(obj) {

??? // 檢查是否成功獲取手機歸屬信息

??? if (obj["QueryResult"] != "True") {

?????? // 顯示查詢到的歸屬信息

?????? $("txtMobile").innerHTML = '<bold>暫無無數據</bold>';

?????? $("txtProvince").innerHTML = '';

?????? $("txtMobile").innerHTML = '';

?????? $("txtCity").innerHTML = '';

?????? $("txtAreaCode").innerHTML = '';

?????? $("txtPostCode").innerHTML = '';

?????? $("txtCard").innerHTML = '';

??? } else {

?????? // 顯示查詢到的歸屬信息

?????? $("txtMobile").innerHTML = obj["Mobile"];

?????? $("txtProvince").innerHTML = obj["Province"];

?????? $("txtCity").innerHTML = obj["City"];

?????? $("txtAreaCode").innerHTML = obj["AreaCode"];

?????? $("txtPostCode").innerHTML = obj["PostCode"];

?????? $("txtCard").innerHTML = obj["Corp"] + obj["Card"];

?????? // alert(obj.toJSONString());

?????? // 將查詢結果返回后臺,交與jsp(或php處理

?????? postDataToBack(obj);

?

??? }

?

}

?

/** ************************ */

// 查詢號碼函數,執行的回調函數

// lxq 2011/09/11

/** ************************ */

function query() {

??? // 若有停止查詢,應跳出查詢程序,不再繼續執行

??? if (isFinish) {

?????? return;

??? }

?

??? // 讀取歸屬數據,成功后調用 querycallback 函數

??? var oHead = document.getElementsByTagName('head')[0];

??? var oTar = $("remotejs");

??? // 存在此js節點應刪除,防止累計生成重復js代碼

??? if (oTar)

?????? oHead.removeChild(oTar);

?

??? var oScript = document.createElement('script');

??? oScript.type = "text/javascript";

??? oScript.id = "remotejs";

??? oScript.src = "http://api.showji.com/Locating/default.aspx?m="

?????????? + escape(startNumber) + "&output=json&callback=querycallback";

??? oHead.appendChild(oScript);

?

??? startNumber++;

??? $("m").value = startNumber;

}

?

/** ************************ */

// 查詢按鈕事件

// lxq 2011/09/11

/** ************************ */

function btnQuery(btn) {

??? // 獲取號碼,進行驗證

??? var mobile = $("m").value;

??? if (mobile.length == 1) {

?????? alert('請輸入號碼');

?????? return;

??? }

?

??? if (btn.value == '開始查詢') {

?????? var number = $("m").value;

?????? if (number != '') {

?????????? try {

????????????? startNumber = parseInt(number);

?????????? } catch (err) {

????????????? $("m").value = startNumber;

?????????? }

?????????? ;

?????? } else {

?????????? $("m").value = startNumber;

?????? }

?

?????? btn.value = '停止查詢';

?????? isFinish = false;

?????? query();

??? } else if (btn.value == '停止查詢') {

?????? btn.value = '繼續查詢';

?????? isFinish = true;

??? } else if (btn.value == '繼續查詢') {

?????? btn.value = '停止查詢';

?????? isFinish = false;

?????? query();

??? }

};

?

/** ************************ */

// 提交數據到后臺處理頁面deal.php

// lxq 2011/09/11

/** ************************ */

var xmlHttp;

function postDataToBack(data) {

??? xmlHttp = null;

??? var url = "http://localhost/test/deal.php";

??? if (window.XMLHttpRequest) {// IE7, Firefox, Opera

?????? xmlHttp = new XMLHttpRequest();

??? } else if (window.ActiveXObject) {// IE6, IE5

?????? xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

??? }

??? if (xmlHttp != null) {

?????? xmlHttp.onreadystatechange = function() {

?????????? // 若后臺處理完,繼續查詢下一個號碼

?????????? if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {

????????????? // alert(xmlHttp.responseText);

????????????? query();

?????????? }

?????? };

?

?????? xmlHttp.open("POST", url, true);

?????? xmlHttp.setRequestHeader("Content-Type",

????????????? "application/x-www-form-urlencoded");

?????? var urlparams = "Mobile=" + data["Mobile"] + "&Province="

????????????? + data["Province"] + "&City=" + data["City"] + "&AreaCode="

????????????? + data["AreaCode"] + "&PostCode=" + data["PostCode"] + "&Corp="

????????????? + data["Corp"] + "&Card=" + data["Card"];

?

?????? urlparams = encodeURI(urlparams);

?????? xmlHttp.send(urlparams);

??? }

3.?????? 后臺處理頁面

后臺的處理思路是:先查詢是否存在該號碼信息,如存在則不再錄入該號碼信息,其他到沒什么了,就是簡單的sql操作了。

<?php

??? header("Content-type: text/html; charset=utf-8");

??? //獲取前臺提交數據

??? $Mobile = $_POST["Mobile"];

??? $Province =? urldecode($_POST["Province"]);

??? $City = urldecode($_POST["City"]);

??? $AreaCode = $_POST["AreaCode"];

??? $PostCode = $_POST["PostCode"];

??? $Corp = urldecode($_POST["Corp"]);

??? $Card = urldecode($_POST["Card"]);

???

??? $con = mysql_connect("localhost", "root", "root");

??? if (!$con)

??? {

?????? error_log("創建mysql連接失敗:". mysql_error(),3,"log.txt");

?????? die('Could not connect: ' . mysql_error());

??? }

??? mysql_query("set names utf8",$con);

??? $db_selected = mysql_select_db("phonenumber_db",$con);

??? $sql="SELECT * FROM tb_number WHERE Mobile = '".$Mobile."'";

??? $result = mysql_query($sql,$con);

??? $row = mysql_fetch_row($result);

???

??? //查詢不到此號碼時,才進行錄入該號碼

??? if($row == false){

?????? $sql ="INSERT INTO `phonenumber_db`.`tb_number` (`IID`, `Mobile`, `Province`, `City`, `AreaCode`, `PostCode`, `Corp`, `Card`) VALUES"

?????? ." (NULL, '".$Mobile."', '".$Province."', '".$City."', '".$AreaCode."', '".$PostCode."', '".$Corp."', '".$Card."');";

?????? $isSuccess = mysql_query($sql,$con);

??????

?????? if($isSuccess == false){

?????????? //echo '插入數據失敗....';

?????????? error_log("插入數據失敗:".error_get_last(),3,"./log.txt");

?????? }

??? }

???

??? //關閉連接

??? mysql_close($con);

?

?>

4.?????? 數據庫腳本

忘了說了,前臺、js、后臺、數據庫都應該使用utf-8編碼,防止出現亂碼。

一個數據庫一張表,這這些了

tb_number

字段

類型

Null

默認

注釋

IID

bigint(20)

?

?

內部標識?

Mobile

varchar(7)

?

?

號碼?

Province

varchar(50)

?

?

省份?

City

varchar(50)

?

?

地市?

AreaCode

varchar(25)

?

?

區域碼?

PostCode

varchar(25)

?

?

郵政編碼?

Corp

varchar(25)

?

?

運營商?

Card

varchar(25)

?

?

品牌?

?

總結

以前在網上看到有人這樣搞過,記不清出,手機號碼歸屬地的數據庫網上也有些現成的數據庫,不是最新的,好像就10~20萬條記錄吧。網友也要那個j2me搞滴手機號碼源程序,才想起做最新庫的事,反正閑著沒事做

總結

以上是生活随笔為你收集整理的“最新”手机号码归属地库制作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。