1435 Stimmen

Wie man die IP-Adresse des Clients in PHP ermittelt

Wie kann ich die IP-Adresse des Clients mit PHP ermitteln?

Ich möchte den Benutzer, der sich auf meiner Website angemeldet hat, über seine IP-Adresse aufzeichnen.

10voto

carbontwelve Punkte 1092

Dies ist die Methode, die ich verwende, und sie validiert eine IPv4 Eingang:

// Get user IP address
if ( isset($_SERVER['HTTP_CLIENT_IP']) && ! empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && ! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = (isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0';
}

$ip = filter_var($ip, FILTER_VALIDATE_IP);
$ip = ($ip === false) ? '0.0.0.0' : $ip;

10voto

SIE Punkte 155

Eine dieser :

    $ip = $_SERVER['REMOTE_ADDR'];
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    $ip = $_SERVER['HTTP_X_FORWARDED'];
    $ip = $_SERVER['HTTP_FORWARDED_FOR'];
    $ip = $_SERVER['HTTP_FORWARDED'];

10voto

Yash Kumar Verma Punkte 8887

Nun, dies kann einfach durch die Verwendung der GLOBAL Variable, die als $_SERVER .

El $_SERVER ist ein Array mit dem Attributnamen REMOTE_ADDR .

Weisen Sie es einfach so zu:

$userIp = $_SERVER['REMOTE_ADDR'];

Oder verwenden Sie es direkt wie echo $_SERVER['REMOTE_ADDR']; ou echo ($_SERVER['REMOTE_ADDR']); .

7voto

Ivan Barayev Punkte 2011

Diese Funktion ist kompakt und Sie können sie überall einsetzen. Aber!

Vergessen Sie das nicht! Bei dieser Art von Funktionen oder Codeblöcken gibt es keine Garantie für die Aufzeichnung der echten IP-Adresse des Benutzers, da einige Benutzer einen Proxy oder ein anderes sicheres Gateway verwenden können, um unsichtbar zu sein oder nicht verfolgt werden zu können

PHP-Funktion:

function GetIP()
{
    if ( getenv("HTTP_CLIENT_IP") ) {
        $ip = getenv("HTTP_CLIENT_IP");
    } elseif ( getenv("HTTP_X_FORWARDED_FOR") ) {
        $ip = getenv("HTTP_X_FORWARDED_FOR");
        if ( strstr($ip, ',') ) {
            $tmp = explode(',', $ip);
            $ip = trim($tmp[0]);
        }
    } else {
        $ip = getenv("REMOTE_ADDR");
    }
    return $ip;
}

Verwendung:

$IP = GetIP(); oder direkt GetIP();

6voto

Akam Punkte 953

Die folgende Funktion ermittelt alle Möglichkeiten und gibt die Werte in einem durch Kommata getrennten Format zurück (ip, ip, usw.).

Es hat auch eine optionale Validierungsfunktion (erster Parameter, der standardmäßig deaktiviert ist), um die IP-Adresse zu validieren (privater Bereich und reservierter Bereich).

<?php
echo GetClientIP(true);

function GetClientIP($validate = False) {
  $ipkeys = array(
  'REMOTE_ADDR',
  'HTTP_CLIENT_IP',
  'HTTP_X_FORWARDED_FOR',
  'HTTP_X_FORWARDED',
  'HTTP_FORWARDED_FOR',
  'HTTP_FORWARDED',
  'HTTP_X_CLUSTER_CLIENT_IP'
  );

  /*
  Now we check each key against $_SERVER if containing such value
  */
  $ip = array();
  foreach ($ipkeys as $keyword) {
    if (isset($_SERVER[$keyword])) {
      if ($validate) {
        if (ValidatePublicIP($_SERVER[$keyword])) {
          $ip[] = $_SERVER[$keyword];
        }
      }
      else{
        $ip[] = $_SERVER[$keyword];
      }
    }
  }

  $ip = ( empty($ip) ? 'Unknown' : implode(", ", $ip) );
  return $ip;
}

function ValidatePublicIP($ip){
  if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
    return true;
  }
  else {
    return false;
  }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X