簡體   English   中英

未定義的索引通知HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR

[英]Undefined index notice HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR

<?php
$clientIP = $_SERVER['HTTP_CLIENT_IP'];
$checkForProxy = $_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_addr = $_SERVER['REMOTE_ADDR'];
if(!empty($clientIP)) {
    $ip_address = $http_client_ip;
}
else if(!empty($checkForProxy)) {
    $ip_address = $checkForProxy;
}
else {
    $ip_address = $remote_addr;
}
echo $ip_address;
?>
Notice: Undefined index: HTTP_CLIENT_IP in C:\xampp\htdocs\series\61 IP\better method\a.php on line 2

Notice: Undefined index: HTTP_X_FORWARDED_FOR in C:\xampp\htdocs\series\61 IP\better method\a.php on line 3
::1

我收到未定義的索引錯誤。 這是因為這兩行

$clientIP = $_SERVER['HTTP_CLIENT_IP'];
$checkForProxy = $_SERVER['HTTP_X_FORWARDED_FOR'];

如何擺脫這種情況,為什么會這樣,因為我在本地主機上運行它?

您可以檢查$_SERVER數組中是否存在這樣的鍵:

$clientIP = false;
if (array_key_exists('HTTP_CLIENT_IP', $_SERVER))
    $clientIP = $_SERVER['HTTP_CLIENT_IP'];

$checkForProxy = false;
if (array_key_exists('HTTP_X_FORWARDED_FOR',$_SERVER))
    $checkForProxy = $_SERVER['HTTP_X_FORWARDED_FOR'];

我認為由於該錯誤,您正在使用localhost

如果您的網站位於虛擬主機上,則可以使用$_SERVER數組,但是在使用localhost ,只能使用getenv()數組。

通過這種方式,而不是使用

$_SERVER['HTTP_CLIENT_IP'];
$_SERVER['HTTP_X_FORWARDED_FOR'];

然后,您可以在localhost上使用這些數組:

getenv('REMOTE_ADDR');
getenv('HTTP_X_FORWARDED_FOR');

順便說一句, mail()函數也不起作用,因此,您必須設置MTA之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM