PHP | Erhalten private IP-Adresse von einem client-Benutzer?

Weiß ich, Frage aber nicht finden, wirkliche Antwort auf stackoverflow. Dies ist nicht X_FORWARDED_FOR, SERVER_NAME oder SERVER_REMOTE_ADDR ich wünschen, erhalten Sie die lokale IP-Adresse des remote-client mit meinem server zu erkennen, wer wirklich auf lokalen remote-Netzwerk angeschlossen ist.

Erklären:

ISP  <---->  ROUTER <----> LOCAL NETWORK <----> LOCAL PC

Was ich wissen will?

  1. Öffentliche IP-Adresse der angeschlossenen remote-client -$_SERVER["REMOTE_ADDR"], okay, aber!...
  2. Lokale IP-Adresse des angeschlossenen client über das öffentliche Netzwerk (192.168.x.x, 10.x.x.x, 172.x.x.x)

Wie dieses problem zu lösen? Ich habe die Antwort, also ich denke, das sollte wissen für alle, wenn Sie wollen, um zu wissen, die lokale IP-Adresse:

Sollten Sie verwenden CURL und curl_getinfo() Funktion. Dann, zeigen Sie die URL-Adresse jeder, der Sie (Ihrem Haupt-server-ip oder was auch immer), zum Beispiel:

<?php
    $ch = curl_init();

    $opt = curl_setopt($ch, CURLOPT_URL, "YOUR_SOME_URL_ADDRESS"); 

    curl_exec($ch);

    $response = curl_getinfo($ch);

    $result = array('client_public_address' => $response["primary_ip"],
                    'client_local_address' => $response["local_ip"]
            );

    var_dump($result);

    curl_close($ch);

?>

Fokus auf $response["primary_ip"] die Antworten Ihrer Öffentlichen Adresse und $response["local_ip"] die reponses lokale Adresse. Jetzt ist dieses Beispiel:

ISP  <---->  ROUTER <----> LOCAL NETWORK <----> LOCAL PC
 /\                                              /\
 ||                                              ||
 \/                                             \/
$response["primary_ip"]                  <----> $response["local_ip"]
213.x.x.x  (for example)                        192.168.1.3 (for example)

Ergebnis:

array (size=2)
  'client_public_address' => string '213.xxx.xxx.xxx' (length=14)
  'client_local_address'  => string '192.168.1.3' (length=11)

Dies wird NICHT geben, eine ECHTE lokale IP-Adresse!

Danke.

  • Warum müssen Sie die lokale IP-Adresse? Es ist die Idee von session-cookies in PHP und anderen Mitteln, um einen Benutzer eindeutig identifizieren.
  • dies ist aber, wie bekommen Sie Ihre server lokale IP nicht client... geben Sie Ihre site mit einem beliebigen proxy, so werden Sie sehen, Sie sind völlig falsch
  • Denken! Sie wollen suchen eine Reale person in das Haus, wer ist verbunden? Sie wusste nicht, ob Sie im Haus ist, zu viele Menschen mit unterschiedlichen user_agent und ports? Ihre Antwort packte Ihre lokale IP-Adresse und bittet um die "hostname" ist verbunden in dem Haus?
  • Es ist immer eine gute Idee, um zu testen, Ihre Erfindungen vor der Veröffentlichung...
  • auch mit einem user-agent und eine private ip-Adresse, Sie können nicht garantieren, dass dies die gleiche person, die mehr als eine person könnte mit dem computer mit dem gleichen browser mit der gleichen windows/linux login oder nicht login bei allen, das ist, wie fast die ganze Familie von Computern und wie viele Unternehmen arbeiten bei der Verwendung von "hot-desking".
  • I think this could help many people in diesem moment sind Sie einfach nur verwirrend Menschen, so lassen Sie mich es klar: Es gibt keinen Weg, um Benutzer - /client private IP mit HTTP (in irgendeiner Sprache: PHP,Ruby,Java, etc.)
  • Dies ist nicht zur Arbeit gehen. Der user private IP, ist nicht unsere Sache
  • Sie können beginnen, indem schreiben Sie Ihre eigenen browser, die lokale IP im Header für jede Anforderung.
  • Versuchen Sie einfach, stellen Sie sich die situation, wenn Hunderte oder Tausende von Benutzern teilen sich dieselbe IP-Adresse. Stellen Sie sich Dutzende von Routern zwischen Benutzer ISP und seinem computer. Am Ende stellen Sie sich dies: mehrere Benutzer mit GLEICHEN LOKALEN IP auf verschiedenen Routern, die alle auf DASSELBE GEMEINSAME ÖFFENTLICHE IP-Adresse. Nicht möglich und nutzlos.
  • (Ja, ich sage das, weil diese Antwort zeigt HOCH ina google-Suche auf meine Frage, um anderen zu helfen.) MEINE ähnliche Frage ist, wenn sowohl der server als auch der client sind in einem privaten Netzwerk, mit vielleicht einer Un-Instanz an ein Internet-gateway. Die Kommunikation möchte ich, um die client-Adresse ist die PRIVATE IP des private client Zugriff auf die PRIVATEN server. SOLLTE der $_SERVER['HTTP_CLIENT_IP' - Wert richtig?

Schreibe einen Kommentar