Home > Backend Development > PHP Tutorial > PHP实现手机归属地查询

PHP实现手机归属地查询

WBOY
Release: 2016-06-23 13:10:35
Original
1020 people have browsed it

通过在慕课网上面的学习,完成了PHP实现手机归属地查询的功能。

后台

MobileQuery类调用:

  • \libs\HttpRquest
  • \libs\ImRedis (未使用)

Api类调用MobileQuery类的Query方法来返回$response的数据,并进行加工。

前台

base.js 使用.ajax请求,并将请求后的数据填充到index.html中。

核心代码展示

  • AutoLoad.php
<?php/** * TODO Auto-generated comment. */class AutoLoad {    /**     * TODO Auto-generated comment.     */     public static function load($className)    {        //命名空间的反斜杠替代        $filename = sprintf('%s.php',str_replace('\\','/',$className));        require_once($filename);    }}spl_autoload_register(['AutoLoad','load']);
Copy after login
  • Api.php
<?php/** * TODO Auto-generated comment. */require_once "AutoLoad.php";use \app\MobileQuery;class Api{    private $response;    private $params;    private $phone;    public function __construct(){        $this->params = $_POST;        if(isset($this->params['tel'])) {            $this->phone = $this->params['tel'];        }else {            $this->phone  =  '17706436202';        }        $this->queryResponse($this->phone);    }    public function queryResponse($phone) {        $this->response = MobileQuery::query($phone);        if(is_array($this->response) and isset($this->response['province'])) {            $this->response['phone'] = $phone;            $this->response['code'] = 200;        } else {            $this->response['phone'] = $phone;            $this->response['msg'] = '手机号码错误';        }    }    public function getResponse()    {        return json_encode($this->response);    }}$Api = new Api();echo $Api->getResponse();
Copy after login
  • app/MobileQuery.php
<?php/** * TODO Auto-generated comment. */namespace app;use libs\HttpRequest;use libs\ImRedis;class MobileQuery {    /**     * TODO Auto-generated comment.     */    const PHONE_API= 'https://tcc.taobao.com/cc/json/mobile_tel_segment.htm';    /**     * TODO Auto-generated comment.     */    const QUERY_PHONE = 'PHONE:INFO:';    public static function query($phone)    {        $phoneData =  null;        if(self::varifyPhone($phone)){            $response = HttpRequest::request(self::PHONE_API, ['tel'=>$phone]);            $phoneData = self::formatData($response);            $phoneData['msg'] ='数据由Cizel的博客提供';        }        return $phoneData;    }    public static function formatData($data)    {        $ret = null;        if(!empty($data)){            preg_match_all("/(\w+):'([^']+)/",$data,$res);            $items = array_combine($res[1],$res[2]);            foreach ($items as $itemKey => $itemVal) {                $ret[$itemKey] = iconv('GB2312','UTF-8',$itemVal);            }        }        return $ret;    }    public static function varifyPhone($phone)    {        if(preg_match("/^1[34578]{1}\d{9}/",$phone)) {            return true;        } else {            return false;        }    }}
Copy after login
  • lib/HttpRequest.php
<?php/** * TODO Auto-generated comment. */namespace libs;class HttpRequest {    /**     * TODO Auto-generated comment.     */    public static function request($url, $params =[], $method='GET')    {        $ret = null;        if(preg_match("/^(http|https)\:\/\/(\w+\.\w+\.\w+)/",$url)) {            $method = strtoupper($method);            if($method == 'POST') {                exit('nothing to do.');            } else {                if($params) {                     if(strripos('?',$url)) {                        $url = $url . '&' . http_build_query($params);                     } else {                        $url = $url . '?' . http_build_query($params);                     }                }                $ret = file_get_contents($url);            }        }        return $ret;    }}
Copy after login
  • statis/js/base.js
/** @Author: Cizel* @Date:   2016-04-11 16:53:52* @Last Modified by:   Cizel* @Last Modified time: 2016-04-11 17:22:32*/$(document).ready(function(){    $('#query').click(function(){        var phone = $('#phone_num').val();        //alert(phone);        if (phone.length == 11) {            Cizel.GLOBAL.AJAX('Api.php','post',{'tel':phone},'json',Cizel.APPS.QUERYPHONE.AJAXCALLBACK);        }    }); });var Cizel = Cizel || {};Cizel.GLOBAL = {};Cizel.APPS = {};Cizel.APPS.QUERYPHONE = {};Cizel.APPS.QUERYPHONE.AJAXCALLBACK = function(data){    if(data.code == 200){        Cizel.APPS.QUERYPHONE.SHOWINFO();        $('#phoneNumber').text(data.phone);        $('#phoneProvince').text(data.province);        $('#phoneCatName').text(data.catName);        $('#phoneMsg').text(data.msg);    } else {        Cizel.APPS.QUERYPHONE.HIDEINFO();    }};Cizel.APPS.QUERYPHONE.SHOWINFO = function(){    $('#phoneInfo').show();}Cizel.APPS.QUERYPHONE.HIDEINFO = function(){    $('#phoneInfo').hide();}Cizel.GLOBAL.AJAX = function(url, method, params,dataType,callBack){    $.ajax({        url: url,        type: method,        data: params,        dataType: dataType,        success:callBack,        error:function(){            alert('请求异常');        }    });};
Copy after login

感悟

通过完成这个实例,感觉自己对php面向对象的编写有了新的理解,同时js的编写能力需要加强。

代码下载

https://github.com/cizel/TryMyBest/tree/master/queryPhone

以上

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template