加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-02-13 14:59:22 所属栏目:PHP教程 来源:互联网
导读:本文章总结了两个常用的手机归属地查询程序,一种是利用api调用第三方接口实现,一种是利用我们自己的手机数据库查询然后再判断手机号归属地查询. 先来看一个调用第三方法网站的一个程序,主要使用curl实现,需要开启php对curl的支持,如果你是windows系统在你
  本文章总结了两个常用的手机归属地查询程序,一种是利用api调用第三方接口实现,一种是利用我们自己的手机数据库查询然后再判断手机号归属地查询.
 
  先来看一个调用第三方法网站的一个程序,主要使用curl实现,需要开启php对curl的支持,如果你是windows系统在你的的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了,如下所示:
 
  取消下面的注释 extension=php_curl.dll
 
  如果您是在Linux下面,那么,您需要重新编译您的PHP了,编辑时,您需要打开编译参数,在configure命令上加上“–with-curl”参数.
 
  然后重启apache,代码如下:
 
  <?php
  header("Content-Type:text/html;charset=utf-8");
  if (isset($_GET['number'])) {
  $url = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo';
  $number = $_GET['number'];
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, "mobileCode={$number}&userId=");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $data = curl_exec($ch);
  curl_close($ch);
  $data = simplexml_load_string($data);
  if (strpos($data, 'http://')) {
  echo '手机号码格式错误!';
  } else {//开源代码Cuoxin.com
  echo $data;
  }
  }
  ?>
  <form action="mobile.php" method="get">
  手机号码: <input type="text" name="number" /> <input type="submit" value="提交" />
  </form>
  实例二:这个实例利用了手机数据库,把文件保存在本地然后查找数据库再来差别,但是你得经常更新数据库才行,代码如下:
 
  <html>
  <head>
  <title>手机号码归属地查询</title>
  </head>
  <style type="text/css">
   #main{
   height:100%;
   }
   #left {
   float:left;
   height:100%;
   width:10%;
   float:left;
   }
   #right{
   float:left;
   height:100%;
   width:100$;
   }
  </style>
  <body>
  <?php
  require ('function.php');
  $pwd="xiaolin"; //密码,请修改
  if (!isset($_GET["action"]) ){
  header("Location:manage.php?action=login");
  
  }
  if ($_GET["action"]=="login"){
  
  ?>
  <form action="manage.php?action=loginin" method="POST">
  <p>请输入密码:</p>
  <p><input type="password" value="" name="pwd"></p>
  <p><input type="submit" value="登录"></p>
  </form>  
  <?php
  }elseif ($_GET["action"]=="loginin"){
   $repwd=$_POST["pwd"];
   if ($repwd != $pwd){
   echo "Sorry,密码错误~!";
   }else {
   $_SESSION["flag"]=true;
   leftnav();
   }
  
  }elseif ($_GET["action"]== "info" ){
   leftnav();
   getinfo();
  ?>
  </div>
   </div>  
  <?php
  }elseif ($_GET["action"]=="edit"){
  leftnav();
  ?>
  <form action="manage.php?action=editp" method="POST">
  <p>手机号码:<input type="text" name="num">(至少7位)</p>
  <p>详细资料:<input type="text" name="info"></p>
  <input type="submit" value="更新">
  </form>  
  
  <?php
  
  }elseif ($_GET["action"]== "loginout"){
   if (isset($_SESSION["flag"])){
   unset($_SESSION["flag"]);
   session_destroy();
   }
   echo "<p><a>登出</a></p><p><a href='manage.php'>返回</a></p>";
  
  
  }elseif ($_GET["action"]=="editp"){
   leftnav();
   $num=$_POST["num"];
   $info=$_POST['info'];
   if (!emptyempty($num) && !emptyempty($info) && strlen($num)>=7 ){
   update($num,$info);
   }else{
   die ("不得为空!");
   }
  }elseif ("about"==$_GET["action"]){
   leftnav();
   showabout();
   }
  ?>
  </body>
  </html>
  index.php,代码如下:
 
  <html>
  <head>
  <title>手机号码归属地查询</title>
  </head>
  <body>
  <form action="index.php?action=search" method="POST">
  <p>请输入你要查询的手机号码:<input type="text" name="phone"></p>
  <p><input type="submit" value="查询手机号码归属地"></p></p>
  </form>
  <?php
  if (isset($_GET["action"])){
  if ("search"==$_GET["action"] ){
  require ('function.php');
  $phone=(isset($_POST["phone"]))?$_POST["phone"]:die ("请返回");
  echo "你查询的手机号码<font color=red>".$phone."</font>属于<font color=red>".getphone($phone)."</font>";
  }  
  }
  ?>
  </body>
  </html>
  function.php函数,代码如下:
 
  <?php
  
  session_start();
      
  function update($num,$info){
   $dbpath="xiaolin/";
   $len=strlen($num);
   if ( $len < 7 ){
   return "手机号码最低7位哦";
   }
   $par="[0-9]";
   for ($i=0;$i<$len;$i++){
    if(!ereg($par,substr($num,$i,1) ) ){
    return "手机号码只能为数字";
    }
   }
   $sunum=scandir($dbpath); //得到支持的手机号码前缀
    array_splice($sunum,0,1); //把当前目录取消
    array_splice($sunum,0,1); //把上一级目录去掉
   $sub=substr($num,0,3); //取得该号码的前三位
   if (in_array($sub,$sunum) ){
     $num1=ltrim(substr($num,3,4),"0");
    $search=file($dbpath.$sub);
    $tmp=$search[$num1];
    $search[$num1]=$num1.'='.$info."n";
    $fp1=fopen($dbpath.$sub.'1','wb+');
  for ($i=0;$i<10000;$i++){
   //$phone=str_pad($i,4,"0",STR_PAD_LEFT);
   //$phoneinfo="";
   //$phoneinfo.=$phone."=";
   //$phoneinfo=(isset($search[$i]))?$search[$i]:"";
   //$phoneinfo.="n";
   fwrite($fp1,$search[$i]);
  }
  fclose($fp1);
   echo "$num 已更新";
   }else{
   die ("暂不支持$sub");
   }
   }
  function getphone($phone){
   $dbpath="xiaolin/";
   $len=strlen($phone);
   if ( $len < 7 ){
   return "手机号码最低7位哦";
   }
   $par="[0-9]";
   for ($i=0;$i<$len;$i++){
    if(!ereg($par,substr($phone,$i,1) ) ){
    return "手机号码只能为数字";
    }
   }
   $sunum=scandir($dbpath); //得到支持的手机号码前缀
    array_splice($sunum,0,1); //把当前目录取消
    array_splice($sunum,0,1); //把上一级目录去掉
   $sub=substr($phone,0,3); //取得该号码的前三位
   if (in_array($sub,$sunum) ){
     $num=ltrim(substr($phone,3,4),"0");
    $search=file($dbpath.$sub);
    $tmp=$search[$num];
    $result=substr($tmp,strpos($tmp,"=")+1,strlen($tmp)-strpos($tmp,"=")-2); //处理数据
    return (strlen($result)>1)?$result:"无数据";
   }else{
   return "暂不支持$sub";
   }
  }
  
  function check(){
   if (!isset($_SESSION["flag"]) ){
   die ("<p>请<a href='manage.php?action=login'>登录!</a></p>");  
   }elseif ($_SESSION["flag"] != true){
   die ("<p>请<a href='manage.php?action=login'>登录!</a></p>");  
   }
  }
  
  function getinfo(){
  check();
   $nums=array("130","131","132","133","134","135","136","137","138","139","150","151","153","155","156","157","158","159");
   $counts="";
   for($j=0;$j<count($nums);$j++){
    $id=$j;
    if ($id >= count($nums) ){ die ("OVER"); }
     $nownum=$nums[$id]; //当前的号码段
    $dbpath="xiaolin/";
    $fp=fopen("xiaolin/$nownum",'r');
    while(!feof($fp)){
     $line=fgets($fp);
     $tmp=explode("=",$line);
     $num1[$tmp[0]]=substr($line,strpos($line,"=")+1,strlen($line)-strpos($line,"=")-2);
    }
    fclose($fp);
   $flag=0;
    for($i=0;$i<10000;$i++){
     $ser=str_pad($i,4,"0",STR_PAD_LEFT);
     if(!strlen($num1[$ser]) ==0 ){
     ++$flag;
    }
   }
   $counts+=$flag;
    echo "$nownum:段记录$flag</p>";
  }
   echo "总计$counts";}
   function leftnav(){
    check();
  ?>
  <div>
  
  <div id="right">
  
  <?php
  }
  function showabout(){
   echo "<p>手机号码归属地查询</p>
  ";
   }
  ?> 

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!