在php中獲取IP地址的方法有很多種,下面我介紹利用linux命令獲取IP地址然后轉換成數組輸出,下面也介紹了一些常用關于php ip地址處理實例.
PHP獲取服務器IP地址,用PHP執行ifconfig獲得Linux服務器IP并輸出為數組,下面是代碼:
- <?php
- function getServerIp(){ //用ifconfig讀取服務器IP并輸出為數組
- $ss = exec('/sbin/ifconfig | sed -n 's/^ *.*addr:/([0-9.]/{7,/}/) .*$//1/p'',$arr);
- return $arr;
- }
- $ips=getServerIp();
- foreach($ips as $k=>$v){//過濾IP
- if(substr($v,0,3)=='127' || substr($v,0,3)=='10.' || substr($v,0,7)=='192.168' || substr($v,0,6)=='172.16'){
- unset($ips[$k]);
- }
- }
- shuffle($ips);//重新排序
- print_r($ips);
- ?>
一些php獲取ip地址例,代碼如下:
- <?php
- function GetIP(){
- if(!emptyempty($_SERVER["HTTP_CLIENT_IP"])){
- $cip = $_SERVER["HTTP_CLIENT_IP"];
- }
- elseif(!emptyempty($_SERVER["HTTP_X_FORWARDED_FOR"])){
- $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
- }
- elseif(!emptyempty($_SERVER["REMOTE_ADDR"])){
- $cip = $_SERVER["REMOTE_ADDR"];
- }
- else{
- $cip = "無法獲取!";
- }
- return $cip;
- }
- echo GetIP();
- ?>
我這里有一個比較公用的方法來獲取用戶ip地址,代碼如下:
- function get_user_ip() {
- if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP']!='unknown') {
- $ip = $_SERVER['HTTP_CLIENT_IP'];
- } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR']!='unknown') {
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } else {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
- return $ip;
- }
PHP獲取IP所在地區(調用新浪API獲取IP所在地),代碼如下:
- function get_location($ip){
- $curl = curl_init();
- curl_setopt($curl,CURLOPT_URL, "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip);
- $location = curl_exec($curl);
- $location = json_decode($location);
- if($location===FALSE) return "";
- return emptyempty($location->desc) ? $location->province.$location->city.$location->district.$location->isp : $location->desc;
- }
新聞熱點
疑難解答