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.
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.
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;
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']);
.
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();
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 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.