当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP手机号归属地查询程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-28 13:08:13 浏览: 评论:0 

本文章总结了两个常用的手机归属地查询程序,一种是利用api调用第三方接口实现,一种是利用我们自己的手机数据库查询然后再判断手机号归属地查询.

先来看一个调用第三方法网站的一个程序,主要使用curl实现,需要开启php对curl的支持,如果你是windows系统在你的的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了,如下所示:

取消下面的注释 extension=php_curl.dll

如果您是在Linux下面,那么,您需要重新编译您的PHP了,编辑时,您需要打开编译参数,在configure命令上加上“–with-curl”参数.

然后重启apache,代码如下:

  1. <?php 
  2. header("Content-Type:text/html;charset=utf-8"); 
  3. if (isset($_GET['number'])) { 
  4. $url = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo'
  5. $number = $_GET['number']; 
  6. $ch = curl_init(); 
  7. curl_setopt($ch, CURLOPT_URL, $url); 
  8. curl_setopt($ch, CURLOPT_POST, true); 
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, "mobileCode={$number}&userId="); 
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  11. $data = curl_exec($ch); 
  12. curl_close($ch); 
  13. $data = simplexml_load_string($data); 
  14. if (strpos($data'http://')) { 
  15. echo '手机号码格式错误!'
  16. else {//开源代码phpfensi.com 
  17. echo $data
  18. ?> 
  19. <form action="mobile.php" method="get"
  20. 手机号码: <input type="text" name="number" /> <input type="submit" value="提交" /> 
  21. </form> 

实例二:这个实例利用了手机数据库,把文件保存在本地然后查找数据库再来差别,但是你得经常更新数据库才行,代码如下:

  1. <html> 
  2. <head> 
  3. <title>手机号码归属地查询</title> 
  4. </head> 
  5. <style type="text/css"
  6.  #main{ 
  7.  height:100%; 
  8.  } 
  9.  #left { 
  10.  float:left; 
  11.  height:100%; 
  12.  width:10%; 
  13.  float:left; 
  14.  } 
  15.  #right{ 
  16.  float:left; 
  17.  height:100%; 
  18.  width:100$; 
  19.  } 
  20. </style> 
  21. <body> 
  22. <?php 
  23. require ('function.php'); 
  24. $pwd="xiaolin"//密码,请修改 
  25. if (!isset($_GET["action"]) ){ 
  26. header("Location:manage.php?action=login"); 
  27.  
  28. if ($_GET["action"]=="login"){ 
  29.  
  30. ?> 
  31. <form action="manage.php?action=loginin" method="POST"
  32. <p>请输入密码:</p> 
  33. <p><input type="password" value="" name="pwd"></p> 
  34. <p><input type="submit" value="登录"></p> 
  35. </form>  
  36. <?php 
  37. }elseif ($_GET["action"]=="loginin"){ 
  38.  $repwd=$_POST["pwd"]; 
  39.  if ($repwd != $pwd){ 
  40.  echo "Sorry,密码错误~!"
  41.  }else { 
  42.  $_SESSION["flag"]=true; 
  43.  leftnav(); 
  44.  } 
  45.  
  46. }elseif ($_GET["action"]== "info" ){ 
  47.  leftnav(); 
  48.  getinfo(); 
  49. ?> 
  50. </div> 
  51.  </div>  
  52. <?php 
  53. }elseif ($_GET["action"]=="edit"){ 
  54. leftnav(); 
  55. ?> 
  56. <form action="manage.php?action=editp" method="POST"
  57. <p>手机号码:<input type="text" name="num">(至少7位)</p> 
  58. <p>详细资料:<input type="text" name="info"></p> 
  59. <input type="submit" value="更新"
  60. </form>  
  61.  
  62. <?php 
  63.  
  64. }elseif ($_GET["action"]== "loginout"){ 
  65.  if (isset($_SESSION["flag"])){ 
  66.  unset($_SESSION["flag"]); 
  67.  session_destroy(); 
  68.  } 
  69.  echo "<p><a>登出</a></p><p><a href='manage.php'>返回</a></p>"
  70.  
  71.  
  72. }elseif ($_GET["action"]=="editp"){ 
  73.  leftnav(); 
  74.  $num=$_POST["num"]; 
  75.  $info=$_POST['info']; 
  76.  if (!emptyempty($num) && !emptyempty($info) && strlen($num)>=7 ){ 
  77.  update($num,$info); 
  78.  }else
  79.  die ("不得为空!"); 
  80.  } 
  81. }elseif ("about"==$_GET["action"]){ 
  82.  leftnav(); 
  83.  showabout(); 
  84.  } 
  85. ?> 
  86. </body> 
  87. </html> 

index.php,代码如下:

  1. <html> 
  2. <head> 
  3. <title>手机号码归属地查询</title> 
  4. </head> 
  5. <body> 
  6. <form action="index.php?action=search" method="POST"
  7. <p>请输入你要查询的手机号码:<input type="text" name="phone"></p> 
  8. <p><input type="submit" value="查询手机号码归属地"></p></p> 
  9. </form> 
  10. <?php 
  11. if (isset($_GET["action"])){ 
  12. if ("search"==$_GET["action"] ){ 
  13. require ('function.php'); 
  14. $phone=(isset($_POST["phone"]))?$_POST["phone"]:die ("请返回"); 
  15. echo "你查询的手机号码<font color=red>".$phone."</font>属于<font color=red>".getphone($phone)."</font>"
  16. }  
  17. ?> 
  18. </body> 
  19. </html> 

function.php函数,代码如下:

  1. <?php 
  2.  
  3. session_start(); 
  4.     
  5. function update($num,$info){ 
  6.  $dbpath="xiaolin/"
  7.  $len=strlen($num); 
  8.  if ( $len < 7 ){ 
  9.  return "手机号码最低7位哦"
  10.  } 
  11.  $par="[0-9]"
  12.  for ($i=0;$i<$len;$i++){ 
  13.   if(!ereg($par,substr($num,$i,1) ) ){ 
  14.   return "手机号码只能为数字"
  15.   } 
  16.  } 
  17.  $sunum=scandir($dbpath); //得到支持的手机号码前缀 
  18.   array_splice($sunum,0,1); //把当前目录取消 
  19.   array_splice($sunum,0,1); //把上一级目录去掉 
  20.  $sub=substr($num,0,3); //取得该号码的前三位 
  21.  if (in_array($sub,$sunum) ){ 
  22.    $num1=ltrim(substr($num,3,4),"0"); 
  23.   $search=file($dbpath.$sub); 
  24.   $tmp=$search[$num1]; 
  25.   $search[$num1]=$num1.'='.$info."n"
  26.   $fp1=fopen($dbpath.$sub.'1','wb+'); 
  27. for ($i=0;$i<10000;$i++){ 
  28.  //$phone=str_pad($i,4,"0",STR_PAD_LEFT); 
  29.  //$phoneinfo=""; 
  30.  //$phoneinfo.=$phone."="; 
  31.  //$phoneinfo=(isset($search[$i]))?$search[$i]:""; 
  32.  //$phoneinfo.="n"; 
  33.  fwrite($fp1,$search[$i]); 
  34. fclose($fp1); 
  35.  echo "$num 已更新"
  36.  }else
  37.  die ("暂不支持$sub"); 
  38.  } 
  39.  } 
  40. function getphone($phone){ 
  41.  $dbpath="xiaolin/"
  42.  $len=strlen($phone); 
  43.  if ( $len < 7 ){ 
  44.  return "手机号码最低7位哦"
  45.  } 
  46.  $par="[0-9]"
  47.  for ($i=0;$i<$len;$i++){ 
  48.   if(!ereg($par,substr($phone,$i,1) ) ){ 
  49.   return "手机号码只能为数字"
  50.   } 
  51.  } 
  52.  $sunum=scandir($dbpath); //得到支持的手机号码前缀 
  53.   array_splice($sunum,0,1); //把当前目录取消 
  54.   array_splice($sunum,0,1); //把上一级目录去掉 
  55.  $sub=substr($phone,0,3); //取得该号码的前三位 
  56.  if (in_array($sub,$sunum) ){ 
  57.    $num=ltrim(substr($phone,3,4),"0"); 
  58.   $search=file($dbpath.$sub); 
  59.   $tmp=$search[$num]; 
  60.   $result=substr($tmp,strpos($tmp,"=")+1,strlen($tmp)-strpos($tmp,"=")-2); //处理数据 
  61.   return (strlen($result)>1)?$result:"无数据"
  62.  }else
  63.  return "暂不支持$sub"
  64.  } 
  65.  
  66. function check(){ 
  67.  if (!isset($_SESSION["flag"]) ){ 
  68.  die ("<p>请<a href='manage.php?action=login'>登录!</a></p>");  
  69.  }elseif ($_SESSION["flag"] != true){ 
  70.  die ("<p>请<a href='manage.php?action=login'>登录!</a></p>");  
  71.  } 
  72.  
  73. function getinfo(){ 
  74. check(); 
  75.  $nums=array("130","131","132","133","134","135","136","137","138","139","150","151","153","155","156","157","158","159"); 
  76.  $counts=""
  77.  for($j=0;$j<count($nums);$j++){ 
  78.   $id=$j
  79.   if ($id >= count($nums) ){ die ("OVER"); } 
  80.    $nownum=$nums[$id]; //当前的号码段 
  81.   $dbpath="xiaolin/"
  82.   $fp=fopen("xiaolin/$nownum",'r'); 
  83.   while(!feof($fp)){ 
  84.    $line=fgets($fp); 
  85.    $tmp=explode("=",$line); 
  86.    $num1[$tmp[0]]=substr($line,strpos($line,"=")+1,strlen($line)-strpos($line,"=")-2); 
  87.   } 
  88.   fclose($fp); 
  89.  $flag=0; 
  90.   for($i=0;$i<10000;$i++){ 
  91.    $ser=str_pad($i,4,"0",STR_PAD_LEFT); 
  92.    if(!strlen($num1[$ser]) ==0 ){ 
  93.    ++$flag
  94.   } 
  95.  } 
  96.  $counts+=$flag
  97.   echo "$nownum:段记录$flag</p>"
  98.  echo "总计$counts";} 
  99.  function leftnav(){ 
  100.   check(); 
  101. ?> 
  102. <div> 
  103.  
  104. <div id="right"
  105.  
  106. <?php 
  107. function showabout(){ 
  108.  echo "<p>手机号码归属地查询</p> 
  109. "; 
  110.  } 
  111. ?> 

Tags: PHP手机号归属地 PHP查询程序

分享到: