Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Entwicklungstipps: Ermitteln Sie die Stadt anhand der IP-Adresse

PHP-Entwicklungstipps: Ermitteln Sie die Stadt anhand der IP-Adresse

不言
不言Original
2018-04-13 14:26:402983Durchsuche

Der Inhalt dieses Artikels besteht darin, Ihnen PHP-Entwicklungstipps zum Erhalten der Stadt basierend auf der IP-Adresse mitzuteilen. Es hat einen gewissen Referenzwert.


Wir verwenden diese Methode immer noch recht häufig, da sie praktisch ist, um Informationen für die Data-Mining-Analyse zu sammeln. Diese Methode ermittelt nicht nur die aktuelle Stadt anhand der IP-Adresse, sondern auch den Standort der Stadt des Benutzers anhand der HTTP-Anfrage.

Implementierungsmethode: Erhalten Sie es hauptsächlich basierend auf der Amap-API. Registrieren Sie sich zunächst als Amap-Benutzer, authentifizieren Sie sich dann als Entwickler, erstellen Sie eine Anwendung und erhalten Sie den aufzurufenden Schlüssel. Die spezifische Implementierungsmethode lautet wie folgt:


<?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;
        );
    }
}


Verwandte Empfehlungen:

Beurteilung von PHP Entwicklungstipps Ob auf WeChat zugegriffen werden soll

Das obige ist der detaillierte Inhalt vonPHP-Entwicklungstipps: Ermitteln Sie die Stadt anhand der IP-Adresse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn