php得到ip,php得到當前時間

本文目錄一覽:

PHP如何獲取用戶的真實IP?

php獲取用戶真實ip的方法:

方法1:

//獲取REMOTE_ADDR屬性,直接可以得到ip

$ip = $_SERVER[“REMOTE_ADDR”];

echo $ip;

方法2:

//從Server中獲取HTTP_VIA,如果獲取到就用HTTP_X_FORWARDED_FOR的值替換,如果獲取不到就取REMOTE_ADDR的值。

$user_IP = ($_SERVER[“HTTP_VIA”]) ? $_SERVER[“HTTP_X_FORWARDED_FOR”] :

$_SERVER[“REMOTE_ADDR”];

$user_IP = ($user_IP) ? $user_IP : $_SERVER[“REMOTE_ADDR”];

echo $user_IP;

方法3:

function getRealIp()

{

$ip=false; //初始化ip為false

if(!empty($_SERVER[“HTTP_CLIENT_IP”])){ //如果HTTP_CLIENT_IP不為空

$ip = $_SERVER[“HTTP_CLIENT_IP”]; //獲取HTTP_CLIENT_IP的值

}

if (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’])) { //如果HTTP_X_FORWARDED_FOR不為空

$ips = explode (“, “, $_SERVER[‘HTTP_X_FORWARDED_FOR’]);

//把HTTP_X_FORWARDED_FOR的值用,分割後存放數組ips

if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }//遍歷處理

for ($i = 0; $i count($ips); $i++) {

if (!eregi (“^(10│172.16│192.168).”, $ips[$i])) {

$ip = $ips[$i]; //獲得真實ip

break;

}

}

}

return ($ip ? $ip : $_SERVER[‘REMOTE_ADDR’]);

}

echo getRealIp();

PHP怎麼獲取當前電腦的IP?

本文所述php實例可以完成獲取局域網所有用戶的電腦IP和主機名、及mac地址的功能,對於php程序設計人員有一定的參考借鑒價值。完整代碼如下:

?php

$bIp = gethostbyname($_ENV[‘COMPUTERNAME’]); //獲取本機的局域網IP

echo “本機IP:”,$bIp,”\n”;

echo “本機主機名:”,gethostbyaddr($bIp),”\n\n\n”; //gethostbyaddr 函數可以根據局域網IP獲取主機名

//默認網關IP

list($ipd1,$ipd2,$ipd3) = explode(‘.’,$bIp);

$mask = $ipd1 . “.” . $ipd2 . “.” . $ipd3 ;

exec(‘arp -a’,$aIp); //獲取局域網中的其他IP

foreach( $aIp as $ipv) {

if(strpos($ipv,’接口’) !== false) {//一下顯示的IP是否是當前局域網中的 而不是其他的類型 可以在cmd下試一下命令

$bool = false;

preg_match(‘/(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/’,$ipv,$arr);

if(strcmp($arr[0],$bIp) == 0) {

$bool = true;

}

} else {

if($bool) {

$str = preg_replace(‘/\s+/’, ‘|’, $ipv);

$sArr = explode(‘|’,$str);

if($sArr[1] == ‘Internet’ || empty($sArr[1])) {

continue;

}

//去除默認網關

if(strcmp($mask . “.1”, $sArr[1]) == 0) {

continue;

}

//去除同網關下255的IP

if(strcmp($mask . “.255”, $sArr[1]) == 0) {

continue;

}

//去除組播IP

list($cIp) = explode(‘.’, $sArr[1]);

if($cIp = 224 $cIp = 239) {

continue;

}

echo “IP地址:|”,$sArr[1],”|\n”;

echo “MAC地址:”,$sArr[2],”\n”;

echo “主機名:”,gethostbyaddr($sArr[1]),”\n”;

echo “\n\n”;

}

}

}

PHP獲取客戶端IP

php獲取客戶端ip地址方法總結

用php獲取客戶端ip地址的方法,具體代碼如下:

?php

$iipp=$_server[“remote_addr”];

echo

$iipp;

?

//////////////////////////////////////////////

?php

$user_ip

=

($_server[“http_via”])

?

$_server[“http_x_forwarded_for”]

:

$_server[“remote_addr”];

$user_ip

=

($user_ip)

?

$user_ip

:

$_server[“remote_addr”];

echo

$user_ip;

?

///////////////////////////////////////////////

?php

function

get_real_ip(){

$ip=false;

if(!empty($_server[“http_client_ip”])){

$ip

=

$_server[“http_client_ip”];

}

if

(!empty($_server[‘http_x_forwarded_for’]))

{

$ips

=

explode

(“,

“,

$_server[‘http_x_forwarded_for’]);

if

($ip)

{

array_unshift($ips,

$ip);

$ip

=

false;

}

for

($i

=

0;

$i

count($ips);

$i++)

{

if

(!eregi

(“^(10|172.16|192.168).”,

$ips[$i]))

{

$ip

=

$ips[$i];

break;

}

}

}

return

($ip

?

$ip

:

$_server[‘remote_addr’]);

}

echo

get_real_ip();

?

///////////////////////////////////////////////

php獲取ip的算法:

?php

if

($http_server_vars[“http_x_forwarded_for”])

{

$ip

=

$http_server_vars[“http_x_forwarded_for”];

}

elseif

($http_server_vars[“http_client_ip”])

{

$ip

=

$http_server_vars[“http_client_ip”];

}

elseif

($http_server_vars[“remote_addr”])

{

$ip

=

$http_server_vars[“remote_addr”];

}

elseif

(getenv(“http_x_forwarded_for”))

{

$ip

=

getenv(“http_x_forwarded_for”);

}

elseif

(getenv(“http_client_ip”))

{

$ip

=

getenv(“http_client_ip”);

}

elseif

(getenv(“remote_addr”))

{

$ip

=

getenv(“remote_addr”);

}

else

{

$ip

=

“unknown”;

}

echo

“你的ip:”.$ip

;

?

///////////////////////////////////////////////

?php

if(getenv(‘http_client_ip’))

{

$onlineip

=

getenv(‘http_client_ip’);

}

elseif(getenv(‘http_x_forwarded_for’))

{

$onlineip

=

getenv(‘http_x_forwarded_for’);

}

elseif(getenv(‘remote_addr’))

{

$onlineip

=

getenv(‘remote_addr’);

}

else

{

$onlineip

=

$http_server_vars[‘remote_addr’];

}

echo

$onlineip;

?

php怎樣獲取用戶真實ip?

獲取客戶端ip其實不是個簡單的事兒,因為存在IP欺騙,和代理問題,所以獲取客戶端的IP的真實性會打折扣的,不能百分百準確。但是我們還是可以盡量寫一些比較完善的獲取客戶端真正ip方法。使用php獲取IP的方法能有很多,我簡單給個例子:

?php

function getip() { 

     $unknown = ‘unknown’; 

     if(isset($_SERVER[‘HTTP_X_FORWARDED_FOR’])  $_SERVER[‘HTTP_X_FORWARDED_FOR’]  strcasecmp($_SERVER[‘HTTP_X_FORWARDED_FOR’], $unknown)){ 

         $ip = $_SERVER[‘HTTP_X_FORWARDED_FOR’]; 

     }elseif(isset($_SERVER[‘REMOTE_ADDR’])  $_SERVER[‘REMOTE_ADDR’]  strcasecmp($_SERVER[‘REMOTE_ADDR’], $unknown)) { 

         $ip = $_SERVER[‘REMOTE_ADDR’]; 

     } 

     /**

      * 處理多層代理的情況

      * 或者使用正則方式:$ip = preg_match(“/[\d\.]{7,15}/”, $ip, $matches) ? $matches[0] : $unknown;

      */

     if (false !== strpos($ip, ‘,’)) $ip = reset(explode(‘,’, $ip)); 

     return $ip; 

?

1、沒有使用代理的情況

REMOTE_ADDR = 客戶端IP

    HTTP_X_FORWARDED_FOR = 沒數值或不顯示

2、使用透明代理的情況

REMOTE_ADDR = 最後一個代理服務器 IP

    HTTP_X_FORWARDED_FOR = 客戶端真實 IP (經過多個代理服務器時,這個值類似:        221.5.252.160, 203.98.182.163, 203.129.72.215)

    這類代理服務器還是將客戶端真實的IP發送給了訪問對象,無法達到隱藏真實身份的目的.

3、使用普通的匿名代理

REMOTE_ADDR = 最後一個代理服務器 IP

    HTTP_X_FORWARDED_FOR = 代理服務器 IP (經過多個代理服務器時,這個值類似:        203.98.182.163, 203.98.182.163, 203.129.72.215)

    這種情況下隱藏了客戶端的真實IP,但是向訪問對象透露了客戶端是使用代理服務器訪問它        們的.

4、使用欺騙性代理服務器

REMOTE_ADDR = 代理服務器 IP

    HTTP_X_FORWARDED_FOR = 隨機的 IP(經過多個代理服務器時,這個值類似:                    220.4.251.159, 203.98.182.163, 203.129.72.215)

    這種情況下同樣透露了客戶端是使用了代理服務器,但編造了一個虛假的隨機                            IP(220.4.251.159)代替客戶端的真實IP來欺騙它.

5、使用高級匿名代理服務器

REMOTE_ADDR = 代理服務器 IP

    HTTP_X_FORWARDED_FOR = 沒數值或不顯示,也可能是unknown

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240089.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:19
下一篇 2024-12-12 12:19

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網絡接口 在配置靜態ip之前,我們首先需要查看系統中的網絡接口,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 想把你和時間藏起來

    如果你覺得時間過得太快,每天都過得太匆忙,那麼你是否曾經想過想把時間藏起來,慢慢享受每一個瞬間?在這篇文章中,我們將會從多個方面,詳細地闡述如何想把你和時間藏起來。 一、一些時間管…

    編程 2025-04-28
  • 計算斐波那契數列的時間複雜度解析

    斐波那契數列是一個數列,其中每個數都是前兩個數的和,第一個數和第二個數都是1。斐波那契數列的前幾項為:1,1,2,3,5,8,13,21,34,…。計算斐波那契數列常用…

    編程 2025-04-28
  • Python檢測IP連通

    Python是一門強大的編程語言,常用於網絡開發、數據分析等領域。IP地址是網絡通信的基礎,在網絡通信中,有時需要檢測IP地址是否連通。下面將從多個方面介紹Python檢測IP連通…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • 時間戳秒級可以用int嗎

    時間戳是指從某個固定的時間點開始計算的已經過去的時間。在計算機領域,時間戳通常使用秒級或毫秒級來表示。在實際使用中,我們經常會遇到需要將時間戳轉換為整數類型的情況。那麼,時間戳秒級…

    編程 2025-04-28
  • 如何在ACM競賽中優化開發時間

    ACM競賽旨在提高程序員的算法能力和解決問題的實力,然而在比賽中優化開發時間同樣至關重要。 一、規劃賽前準備 1、提前熟悉比賽規則和題目類型,了解常見算法、數據結構和快速編寫代碼的…

    編程 2025-04-28

發表回復

登錄後才能評論