質問

PHPでIPアドレスを取得するより良い方法は何ですか:

getenv('REMOTE_ADDR'); 

または、

PHPでIPアドレスを取得するより良い方法は何ですか:

getenv('REMOTE_ADDR'); 

または、

<*>

2つの違いがあれば、教えてください。

SERVER['REMOTE_ADDR'];

2つの違いがあれば、教えてください。

役に立ちましたか?

解決

getenv()を使用して任意の環境変数にアクセスできます(PHPは単にREMOTE_ADDRをスクリプトの環境変数として登録します)が、$ _ SERVERを使用すると、明らかに$ _SERVERスーパーグローバルのコンテンツにのみアクセスできます。

一般的なアプローチは、これに$ _SERVERを使用することですが、実際には機能的に違いはありません。

他のヒント

$ _ SERVERはビルトインPHP変数ですが、getenv()は環境(おそらくApache / IIS)に値を要求します。

IPを取得する最良の方法は次のとおりです。

$ip = (!empty(

$ _ SERVERはビルトインPHP変数ですが、getenv()は環境(おそらくApache / IIS)に値を要求します。

IPを取得する最良の方法は次のとおりです。

<*>

しかし、これらの2つの変数に違いがあるとは思わない...うーん。

SERVER['REMOTE_ADDR'])) ?

$ _ SERVERはビルトインPHP変数ですが、getenv()は環境(おそらくApache / IIS)に値を要求します。

IPを取得する最良の方法は次のとおりです。

<*>

しかし、これらの2つの変数に違いがあるとは思わない...うーん。

SERVER['REMOTE_ADDR'] : getenv('REMOTE_ADDR');

しかし、これらの2つの変数に違いがあるとは思わない...うーん。

おそらく使用する方が良いでしょう   $ _SERVER ['REMOTE_ADDR']; サーバー間の非互換性を防ぐため。

thoの呼び出しに違いはありません。ご覧のとおり、 PHPマニュアルでは、同じ例で両方の方法を使用しています。 $ _SERVERのようなグローバル変数が有効になっておらず、getenv()を使用せざるを得ない場合があります。私の経験では、グローバル変数が無効になっているサーバーを見たことはありません。

$ _ SERVER ['REMOTE_ADDR'] を使用すると、リモート要求が発生したときに設定される$ _SERVER []配列にアクセスして、グローバル変数を直接読み取ります。

$ _SERVER は、次のような情報を含む配列です。ヘッダー、パス、およびスクリプトの場所として。この配列のエントリは、Webサーバーによって作成されます。すべてのWebサーバーがこれらのいずれかを提供するという保証はありません。サーバーは一部を省略したり、ここにリストされていない他のサーバーを提供したりできます。とはいえ、これらの変数の多くは&#187;で説明されています。 CGI 1.1仕様なので、それらを期待できるはずです。

関連する値を取得するためのgetenv()関数は、任意の環境変数にアクセスします!

どちらの場合も同じ値と同じ変数にアクセスしますが、$ _ SERVERはPHPスーパーグローバル変数のビルドであり、代わりにgetenv()は現在の環境で定義された変数の値を取得します!

この場合、IPアドレスを取得するには、スーパーグローバル変数を使用するのが最善の方法だと思います!

この投稿は少し古くなっているので、PHPスクリプトで現在リクエストIPアドレスを取得している方法を共有すると思いました。この投稿はもともと 良い リクエストIPを取得する方法。これはより良い方法ですが、元の投稿で与えられた選択肢の1つではありません。

このアプローチでは、移植性を高めるために小さな関数ライブラリを使用します。

// Function to sanitize IP string
function sanitize_ip($string){
  $string = trim($string); 
  $string = strip_tags($string);
  $string = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
  $string = str_replace('\n', '', $string);
  $string = trim($string); 
  return $string;
}

// Function to evaluate HTTP headers for IP
function evaluate_ip(){
  $ip_keys =
    array(
      'HTTP_CF_CONNECTING_IP',  'HTTP_CLIENT_IP',            'HTTP_X_FORWARDED_FOR',
      'HTTP_X_FORWARDED',       'HTTP_X_CLUSTER_CLIENT_IP',  'HTTP_X_REAL_IP',
      'HTTP_X_COMING_FROM',     'HTTP_PROXY_CONNECTION',     'HTTP_FORWARDED_FOR',
      'HTTP_FORWARDED',         'HTTP_COMING_FROM',          'HTTP_VIA',
      'REMOTE_ADDR'
    );
  foreach ($ip_keys as $key){
    if (array_key_exists($key, 

この投稿は少し古くなっているので、PHPスクリプトで現在リクエストIPアドレスを取得している方法を共有すると思いました。この投稿はもともと 良い リクエストIPを取得する方法。これはより良い方法ですが、元の投稿で与えられた選択肢の1つではありません。

このアプローチでは、移植性を高めるために小さな関数ライブラリを使用します。

<*>

これが2018年の今、誰かを助けることを願っています!

SERVER) === true){ foreach (explode(',',

この投稿は少し古くなっているので、PHPスクリプトで現在リクエストIPアドレスを取得している方法を共有すると思いました。この投稿はもともと 良い リクエストIPを取得する方法。これはより良い方法ですが、元の投稿で与えられた選択肢の1つではありません。

このアプローチでは、移植性を高めるために小さな関数ライブラリを使用します。

<*>

これが2018年の今、誰かを助けることを願っています!

SERVER[$key]) as $ip){ $ip = trim($ip); $ip = normalize_ip($ip); if (validate_ip($ip)) return $ip; } } } // Build error response HTML $msg = '<div style="width:100%; font-family:serif; font-size:24px; line-height:28px; color:#cc0000; font-weight:bold; text-align:center; padding:10px;"> ERROR:&nbsp;<span style="color:#ffc107">Invalid IP Address</span> </div>'; echo $msg; exit; } // Function to normalize IPv4 and IPv6 addresses with port function normalize_ip($ip){ // IPv4 with port (e.g., 123.123.123.123:80) if (strpos($ip, ':') !== false && substr_count($ip, '.') == 3 && strpos($ip, '[') === false){ $ip = explode(':', $ip); $ip = $ip[0]; } // IPv6 with port (e.g., [::1]:80) else { $ip = explode(']', $ip); $ip = ltrim($ip[0], '['); } return $ip; } // Function to validate IP address function validate_ip($ip){ $options = FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE; $filtered = filter_var($ip, FILTER_VALIDATE_IP, $options); if (!$filtered || empty($filtered)){ if (preg_match("/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/", $ip)){ return $ip; // IPv4 } elseif (preg_match("/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/", $ip)){ return $ip; // IPv6 } // Build error response HTML $msg = '<div style="width:100%; font-family:serif; font-size:24px; line-height:28px; color:#cc0000; font-weight:bold; text-align:center; padding:10px;"> ERROR:&nbsp;<span style="color:#ffc107">Invalid IP Address</span> </div>'; echo $msg; exit; } return $filtered; } function get_ip(){ $ip = evaluate_ip(); if (preg_match('/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/', $ip, $ip_match)){ $ip = $ip_match[1]; } return sanitize_ip($ip); } // To Use $ip = get_ip(); //

これが2018年の今、誰かを助けることを願っています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top