suchen
HeimBackend-EntwicklungPHP-TutorialSo erhalten Sie die echte IP des Benutzer-Clients in PHP

So erhalten Sie die echte IP des Benutzer-Clients in PHP

Jan 02, 2018 pm 02:01 PM
php客户端Wirklichkeit

Wie erhält PHP die echte IP des Benutzer-Clients? Das Abrufen der IP-Adresse des Clients ist eigentlich keine einfache Aufgabe. Aufgrund von IP-Spoofing und Proxy-Problemen wird die Authentizität des Abrufens der IP-Adresse des Clients beeinträchtigt und kann nicht 100 % genau sein. Wir versuchen jedoch, umfassendere Methoden zu verwenden, um die IP des Kunden zu erhalten. Im Folgenden wird Ihnen die Methode zum Abrufen der tatsächlichen IP des Benutzerclients in PHP erläutert.

Das Abrufen der Client-IP ist eigentlich keine einfache Aufgabe. Aufgrund von IP-Spoofing und Proxy-Problemen ist die Authentizität des Client-IP-Abrufs gefährdet und kann nicht zu 100 % genau sein Es gibt eine relativ vollständige Methode zum Abrufen der echten IP des Clients.

function getIp(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);

Jetzt müssen wir diesen Code erklären. getenv() und strcasecmp(), die vorherige Funktion ruft die Systemumgebungsvariable ab, wenn sie den Wert zurückgibt, andernfalls gibt sie false zurück.

$_SERVER ist das superglobale Variablenarray des Servers. Verwenden Sie $_SERVER['REMOTE_ADDR '], um die IP-Adresse des Clients abzurufen. Der Unterschied zwischen den beiden besteht darin, dass getenv die Ausführung von PHP im IIS-Isapi-Modus nicht unterstützt Die Zeichenfolgenfunktion besteht darin, Zeichenfolge1 und Zeichenfolge2 zu kombinieren und 0 zurückzugeben, wenn sie gleich ist. Wenn Zeichenfolge1 größer als Zeichenfolge2 ist, wird eine Zahl größer als 0 zurückgegeben. Wenn sie kleiner ist, wird eine Zahl kleiner als 0 zurückgegeben.

Die Funktion zuerst Verwendet die Kunden-IP. Wenn sie nicht eingerichtet ist, versuchen Sie, die Proxy-Methode zu verwenden. Wenn sie nicht funktioniert, verwenden Sie REMOTE_ADDR.

Ich habe auch eine detailliertere Methode zur IP-Erkennung gesehen, die IP berücksichtigt Spoofing und mehrere Proxy-Codes. Die Methode ist ähnlich.

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;
}
Eins, PHP ohne Verwendung eines Proxyservers, um die Client-IP zu erhalten:

REMOTE_ADDR = Client-IP

HTTP_X_FORWARDED_FOR = Kein Wert oder keine Anzeige


2. Transparenz verwenden Proxyserver-Situation: Transparente Proxys

REMOTE_ADDR = Letzte Proxyserver-IP

HTTP_X_FORWARDED_FOR = Client echte IP (beim Durchlaufen mehrerer Proxyserver ist dieser Wert ähnlich: 221.5.252.160, 203.98. 182.163, 203.129.72.215)


Diese Art von Proxyserver sendet weiterhin die echte IP des Clients an das Zugriffsobjekt, das Der Zweck, die wahre Identität zu verbergen, kann nicht erreicht werden.

3. Verwenden Sie gewöhnliches PHP eines anonymen Proxyservers, um die Client-IP zu erhalten: Anonyme Proxys

REMOTE_ADDR = Letzte Proxyserver-IP

HTTP_X_FORWARDED_FOR = Proxyserver-IP (beim Durchlaufen mehrerer Proxyserver ist dieser Wert ähnlich: 203.98 .182.163, 203.98.182.163, 203.129.72.215)



In diesem Fall die tatsächliche IP des Der Client ist verborgen, dem Zugriffsobjekt wird jedoch offenbart, dass der Client einen Proxyserver verwendet, um auf ihn zuzugreifen.

4. Die Verwendung betrügerischer Proxyserver: Verzerrung von Proxys

REMOTE_ADDR = Proxyserver-IP

HTTP_X_FORWARDED_FOR = zufällige IP (bei der Durchleitung über mehrere Proxyserver ist dieser Wert ähnlich: 220.4.251.159, 203.98.182.163, 203.129.72.215)


In diesem Fall ist es so Außerdem wurde festgestellt, dass der Client einen Proxy-Server verwendet, aber eine gefälschte zufällige IP (220.4.251.159) erstellt, um den Client zu ersetzen. Verwenden Sie die echte IP des Clients, um ihn zu täuschen.

5 ein Proxyserver mit hoher Anonymität, um die Client-IP zu erhalten: High Anonymity Proxies (Elite-Proxys)

REMOTE_ADDR = Proxyserver-IP

HTTP_X_FORWARDED_FOR = Kein Wert oder nicht angezeigt

Unabhängig davon, ob es sich um REMOTE_ADDR oder HTTP_FORWARDED_FOR handelt, sind diese Header-Nachrichten möglicherweise nicht verfügbar, da verschiedene Browser und verschiedene Netzwerkgeräte möglicherweise unterschiedliche IP-Header-Nachrichten senden. Daher verwendet PHP $_SERVER["REMOTE_ADDR"] und $_SERVER["HTTP_X_FORWARDED_FOR"] Erhalten Sie einen Wert, der ein Nullwert oder ein „unbekannter“ Wert sein kann.

Verwandte Empfehlungen:

So berechnen Sie die IP-Adressmaske php

php IP Get City API (Innocent IP Database)

php IP und IP-Segment-Zugriffsbeschränkungscode_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonSo erhalten Sie die echte IP des Benutzer-Clients in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Welche Daten können in einer PHP -Sitzung gespeichert werden?Welche Daten können in einer PHP -Sitzung gespeichert werden?May 02, 2025 am 12:17 AM

PHPSSIONS CANSTORESTRINGEN, ZUGNALTEN, ARRAYS, ANDOBjekte.1.

Wie starten Sie eine PHP -Sitzung?Wie starten Sie eine PHP -Sitzung?May 02, 2025 am 12:16 AM

TostartaphpSession, useSession_start () atthescript'Sbeginning.1) PlaCEITBEFOREANYOUTPUTTOTHESESSIONSCOOKIE.2) useSsionsforuserDatalikeloginStatusOrShopingCarts

Was ist eine Sitzungsregeneration und wie verbessert es die Sicherheit?Was ist eine Sitzungsregeneration und wie verbessert es die Sicherheit?May 02, 2025 am 12:15 AM

Die Sitzung der Sitzung bezieht sich auf die Generierung einer neuen Sitzungs -ID und die Ungültigmachung der alten ID, wenn der Benutzer sensible Vorgänge bei festgelegten Sitzungsangriffen ausführt. Die Implementierungsschritte umfassen: 1. Erkennen sensibler Vorgänge, 2. Erstellen neuer Sitzungs-ID, 3..

Was sind einige Leistungsüberlegungen bei der Verwendung von PHP -Sitzungen?Was sind einige Leistungsüberlegungen bei der Verwendung von PHP -Sitzungen?May 02, 2025 am 12:11 AM

PHP -Sitzungen haben erhebliche Auswirkungen auf die Anwendungsleistung. Zu den Optimierungsmethoden gehören: 1. Verwenden Sie eine Datenbank, um Sitzungsdaten zu speichern, um die Antwortgeschwindigkeit zu verbessern; 2. Reduzieren Sie die Verwendung von Sitzungsdaten und speichern Sie nur die erforderlichen Informationen. 3.. Verwenden Sie einen nicht blockierenden Sitzungsprozessor, um die Parallelitätsfunktionen zu verbessern. 4. Passen Sie die Ablaufzeit der Sitzung an, um Benutzererfahrung und Serverbelastung auszugleichen. 5. Verwenden Sie persistente Sitzungen, um die Anzahl der Les- und Schreibzeiten zu verringern.

Wie unterscheiden sich PHP -Sitzungen von Cookies?Wie unterscheiden sich PHP -Sitzungen von Cookies?May 02, 2025 am 12:03 AM

PhpSessionsaresServer-Side, whilecookiesareclient-Side.1) SESSIsions Storedataontheserver, Aremoresecure und Handlelargerdata.2) CookieStoredataoneTheClient, AslosenSecure und LimitedInsiesindaSsibilitäts- und -Stasibilitäts- und -Stasibilitäts- und -Anssibilitäts- und -Anssibilitätsporsedataandcookiesefornonsesibel, adailliertes, adailliertes, adailliertes, adailliertes, adailliertes, addiertes-addiertes- und -Staillieren- und -Anssistieren, und -Anssibilitätsporsedaten- und -Sta- und addierta und -Anssibilitäts- und addiertes- und addailliert.

Wie identifiziert PHP die Sitzung eines Benutzers?Wie identifiziert PHP die Sitzung eines Benutzers?May 01, 2025 am 12:23 AM

PhpidentifiesAsersSSessionUsingSSessionCookiesAndSessionIDs.1) WHANE Session_Start () iscalled, phpGeneratesAuniqueSessionIDStoredInacookienMamePhpSsidontonTheusers.2) thisidallowStoretrieVessionDataFromtheServer.

Was sind einige Best Practices für die Sicherung von PHP -Sitzungen?Was sind einige Best Practices für die Sicherung von PHP -Sitzungen?May 01, 2025 am 12:22 AM

Die Sicherheit von PHP -Sitzungen kann durch folgende Maßnahmen erreicht werden: 1. Verwenden Sie Session_regenerate_id (), um die Sitzungs -ID zu regenerieren, wenn sich der Benutzer anmeldet oder eine wichtige Operation ist. 2. Verschlüsseln Sie die Übertragungssitz -ID durch das HTTPS -Protokoll. A. Verwenden Sie Session_save_path (), um das sichere Verzeichnis anzugeben, um Sitzungsdaten zu speichern und Berechtigungen korrekt festzulegen.

Wo werden standardmäßig PHP -Sitzungsdateien gespeichert?Wo werden standardmäßig PHP -Sitzungsdateien gespeichert?May 01, 2025 am 12:15 AM

PhpSessionFilesArestoredinTHedRectorySpecifiedBySession.save_path, typischerweise/tmponunix-likesystemsorc: \ windows \ temponwindows

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor