用户实际Ip获取

    xiaoxiao2021-03-25  71

    在项目中,经常会有记录浏览日志的时候,同时需要记录客户端真实ip,主要判断客户端是否使用代理的情况 1、php中判断和获取

    相关函数介绍: 1$_SERVERgetenv的区别:getenv不支持IIS的isapi方式运行的php 2、HTTP_CLIENT_IP:可通过http头伪造, 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。 3、HTTP_X_FORWARDED_FOR:可通过http头伪造 4、REMOTE_ADDR:可能是用户真实IP也可能是代理IP,是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。 5$_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP 6$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造) 7$_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

    示例:

    //记录浏览某个页面的日志 function addLog(){ $ads = Input::get('ads'); $ads = htmlspecialchars(($ads)); $aVisitlog = array( 'ads' => $ads, 'page_id' => Input::get('page_id'), 'ip' => this->ip(), 'created_at' => date('Y-m-d H:i:s' , time()) ); $oVisit = new VisitLog($aVisitlog); $oVisit->save(); } //用户所在IP--客户端 function ip(){ if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){ $ip = getenv('HTTP_CLIENT_IP'); }elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){ $ip = getenv('HTTP_X_FORWARDED_FOR'); }elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ $ip = getenv('REMOTE_ADDR'); }elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){ $ip = $_SERVER['REMOTE_ADDR']; } return preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : 'unknown'; }

    2、js中判断和获取

    <script> function browserRedirect(url) { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match(/midp/i) == "midp"; var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid = sUserAgent.match(/android/i) == "android"; var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; if ((bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) ){ window.location.href=url; } } $(document).ready(function(){ var thisId = window.location.hash; if(thisId != "" && thisId != undefined){ var url = '/mobile/want'; browserRedirect(url); }else{ var url = '/mobile'; browserRedirect(url); } }); </script>
    转载请注明原文地址: https://ju.6miu.com/read-39533.html

    最新回复(0)