Maison  >  Article  >  développement back-end  >  Conseils de développement PHP : obtenez la ville en fonction de l'adresse IP

Conseils de développement PHP : obtenez la ville en fonction de l'adresse IP

不言
不言original
2018-04-13 14:26:402983parcourir

Le contenu de cet article est de partager avec vous des conseils de développement PHP pour obtenir la ville en fonction de l'adresse IP. Elle a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer


<.>

Nous utilisons encore assez souvent cette méthode pour faciliter la collecte d'informations pour l'analyse du data mining. Cette méthode obtient non seulement la ville actuelle en fonction de l'adresse IP, mais obtient également l'emplacement de la ville de l'utilisateur en fonction de la requête HTTP.

Méthode de mise en œuvre : obtenez-le principalement sur la base de l'API Amap. Enregistrez-vous d'abord en tant qu'utilisateur Amap, puis authentifiez-vous en tant que développeur, créez une application et obtenez la clé à appeler. La méthode spécifique de mise en œuvre est la suivante :


<?php

/**
 * =======================================
 * Created by ZHIHUA·WEI.
 * Author: ZHIHUA·WEI
 * Date: 2018/4/12
 * Time: 16:13
 * Project: PHP开发小技巧
 * Power: 根据ip地址获取城市
 * =======================================
 */

/**
 * 根据HTTP请求获取用户位置
 */
function get_user_location()
{
    $key = "4a218d0d82c3a74acf019b701e8c0ccc"; // 高德地图key
    $url = "http://restapi.amap.com/v3/ip?key=$key";
    $json = file_get_contents($url);
    $obj = json_decode($json, true); // 转换数组
    $obj["message"] = $obj["status"] == 0 ? "失败" : "成功";
    return $obj;
}

/**
 * 根据 ip 获取 当前城市
 */
function get_city_by_ip()
{
    if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
        $cip = $_SERVER["HTTP_CLIENT_IP"];
    } elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
        $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } elseif (!empty($_SERVER["REMOTE_ADDR"])) {
        $cip = $_SERVER["REMOTE_ADDR"];
    } else {
        $cip = "";
    }
    $url = &#39;https://restapi.amap.com/v3/ip&#39;;
    $data = array(
        &#39;output&#39; => &#39;json&#39;,
        &#39;key&#39; => &#39;4a218d0d82c3a74acf019b701e8c0ccc&#39;,
        &#39;ip&#39; => $cip
    );

    $postdata = http_build_query($data);
    $opts = array(
        &#39;http&#39; => array(
            &#39;method&#39; => &#39;POST&#39;,
            &#39;header&#39; => &#39;Content-type: application/x-www-form-urlencoded&#39;,
            &#39;content&#39; => $postdata
        )
    );

    $context = stream_context_create($opts);

    $result = file_get_contents($url, false, $context);
    if (!empty($result)) {
        $res = json_decode($result, true);
        if (!empty($res)) {

            if (count($res[&#39;province&#39;]) == 0) {
                $res[&#39;province&#39;] = &#39;北京市&#39;;
            }
            if (!empty($res[&#39;province&#39;]) && $res[&#39;province&#39;] == "局域网") {
                $res[&#39;province&#39;] = &#39;北京市&#39;;
            }
            if (count($res[&#39;city&#39;]) == 0) {
                $res[&#39;city&#39;] = &#39;北京市&#39;;
            }
        } else {
            $res[&#39;province&#39;] = &#39;北京市&#39;;
            $res[&#39;city&#39;] = &#39;北京市&#39;;
        }

        return $res;
    } else {
        return array(
            "province" => &#39;北京市&#39;,
            "city" => &#39;北京市&#39;
        );
    }
}


Recommandations associées :

Jugement de PHP conseils de développement Que ce soit pour accéder via WeChat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn