>  기사  >  백엔드 개발  >  PHP는 IP 주소를 기반으로 도시를 가져옵니다. php는 사용자 IP를 가져옵니다. php ip php는 서버 i를 가져옵니다.

PHP는 IP 주소를 기반으로 도시를 가져옵니다. php는 사용자 IP를 가져옵니다. php ip php는 서버 i를 가져옵니다.

WBOY
WBOY원래의
2016-07-29 08:50:431093검색

이런 수요가 있을 경우 사용자의 IP 주소를 기반으로 사용자가 거주하는 도시를 찾아야 합니다.
이 글은 다큐멘터리 글이고 논리가 없습니다. 그런 필요가 있는 친구들은 직접 복사해서 사용할 수 있습니다. 세부 사항을 살펴볼 필요 없이 코드로 직접 이동하세요.

<code><span><?php</span>
header(<span>'Content-Type:text/html;Charset=utf-8'</span>);
<span><span>function</span><span>GetIp</span><span>()</span>{</span><span>$realip</span> = <span>''</span>;
    <span>$unknown</span> = <span>'unknown'</span>;
    <span>if</span> (<span>isset</span>(<span>$_SERVER</span>)){
        <span>if</span>(<span>isset</span>(<span>$_SERVER</span>[<span>'HTTP_X_FORWARDED_FOR'</span>]) && !<span>empty</span>(<span>$_SERVER</span>[<span>'HTTP_X_FORWARDED_FOR'</span>]) && strcasecmp(<span>$_SERVER</span>[<span>'HTTP_X_FORWARDED_FOR'</span>], <span>$unknown</span>)){
            <span>$arr</span> = explode(<span>','</span>, <span>$_SERVER</span>[<span>'HTTP_X_FORWARDED_FOR'</span>]);
            <span>foreach</span>(<span>$arr</span><span>as</span><span>$ip</span>){
                <span>$ip</span> = trim(<span>$ip</span>);
                <span>if</span> (<span>$ip</span> != <span>'unknown'</span>){
                    <span>$realip</span> = <span>$ip</span>;
                    <span>break</span>;
                }
            }
        }<span>else</span><span>if</span>(<span>isset</span>(<span>$_SERVER</span>[<span>'HTTP_CLIENT_IP'</span>]) && !<span>empty</span>(<span>$_SERVER</span>[<span>'HTTP_CLIENT_IP'</span>]) && strcasecmp(<span>$_SERVER</span>[<span>'HTTP_CLIENT_IP'</span>], <span>$unknown</span>)){
            <span>$realip</span> = <span>$_SERVER</span>[<span>'HTTP_CLIENT_IP'</span>];
        }<span>else</span><span>if</span>(<span>isset</span>(<span>$_SERVER</span>[<span>'REMOTE_ADDR'</span>]) && !<span>empty</span>(<span>$_SERVER</span>[<span>'REMOTE_ADDR'</span>]) && strcasecmp(<span>$_SERVER</span>[<span>'REMOTE_ADDR'</span>], <span>$unknown</span>)){
            <span>$realip</span> = <span>$_SERVER</span>[<span>'REMOTE_ADDR'</span>];
        }<span>else</span>{
            <span>$realip</span> = <span>$unknown</span>;
        }
    }<span>else</span>{
        <span>if</span>(getenv(<span>'HTTP_X_FORWARDED_FOR'</span>) && strcasecmp(getenv(<span>'HTTP_X_FORWARDED_FOR'</span>), <span>$unknown</span>)){
            <span>$realip</span> = getenv(<span>"HTTP_X_FORWARDED_FOR"</span>);
        }<span>else</span><span>if</span>(getenv(<span>'HTTP_CLIENT_IP'</span>) && strcasecmp(getenv(<span>'HTTP_CLIENT_IP'</span>), <span>$unknown</span>)){
            <span>$realip</span> = getenv(<span>"HTTP_CLIENT_IP"</span>);
        }<span>else</span><span>if</span>(getenv(<span>'REMOTE_ADDR'</span>) && strcasecmp(getenv(<span>'REMOTE_ADDR'</span>), <span>$unknown</span>)){
            <span>$realip</span> = getenv(<span>"REMOTE_ADDR"</span>);
        }<span>else</span>{
            <span>$realip</span> = <span>$unknown</span>;
        }
    }
    <span>$realip</span> = preg_match(<span>"/[\d\.]{7,15}/"</span>, <span>$realip</span>, <span>$matches</span>) ? <span>$matches</span>[<span>0</span>] : <span>$unknown</span>;
    <span>return</span><span>$realip</span>;
}

<span><span>function</span><span>GetIpLookup</span><span>(<span>$ip</span> = <span>''</span>)</span>{</span><span>if</span>(<span>empty</span>(<span>$ip</span>)){
        <span>$ip</span> = GetIp();
    }
    <span>$res</span> = @file_get_contents(<span>'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='</span> . <span>$ip</span>);
    <span>if</span>(<span>empty</span>(<span>$res</span>)){ <span>return</span><span>false</span>; }
    <span>$jsonMatches</span> = <span>array</span>();
    preg_match(<span>'#\{.+?\}#'</span>, <span>$res</span>, <span>$jsonMatches</span>);
    <span>if</span>(!<span>isset</span>(<span>$jsonMatches</span>[<span>0</span>])){ <span>return</span><span>false</span>; }
    <span>$json</span> = json_decode(<span>$jsonMatches</span>[<span>0</span>], <span>true</span>);
    <span>if</span>(<span>isset</span>(<span>$json</span>[<span>'ret'</span>]) && <span>$json</span>[<span>'ret'</span>] == <span>1</span>){
        <span>$json</span>[<span>'ip'</span>] = <span>$ip</span>;
        <span>unset</span>(<span>$json</span>[<span>'ret'</span>]);
    }<span>else</span>{
        <span>return</span><span>false</span>;
    }
    <span>return</span><span>$json</span>;
}


<span>$ipInfos</span> = GetIpLookup(<span>'123.125.114.144'</span>); <span>//baidu.com IP地址</span>
var_dump(<span>$ipInfos</span>);</code>

Sina의 오픈 API를 사용해도 실행 속도는 여전히 매우 좋습니다. 이 글은 CSDN에서 발췌한 글입니다. 재인쇄시 출처를 꼭 밝혀주세요! http://blog.csdn.net/liruxing1715/article/details/28238483

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

위 내용은 IP 주소와 PHP 내용을 포함하여 IP 주소를 기반으로 도시를 얻는 PHP를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.