ViaThinkSoft CodeLib
Dieser Artikel befindet sich in der Kategorie:
CodeLib → Programmierhilfen → PHP
IP Adressen werden gerne bei Formulareingaben mitgeschrieben, um Spammer verfolgen zu können. Desweiteren ist eine eindeutige IP-Adresse wichtig für Besucherzähler mit Reloadsperren. Mit der globalen Variable $_SERVER['remote_addr'] wird meistens die IP-Adresse des Besuchers erfasst. Dies ist jedoch unsicher, da sie bei der Verwendung von Proxies auf den Proxyserver anstelle des Besuchers zeigt. Dann wäre eine Strafverfolgung nicht mehr sicher genug. Und bei Proxies, die die IP-Adresse dynamisch wechseln (z.B. AOL) würde ein Besucherzähler bei jedem Klick in die höhe Springen. Proxies fügen in der Regel die Kopfzeilen "HTTP_X_FORWARDED_FOR" und/oder "HTTP_CLIENT_IP" bei jeder HTTP-Anfrage hinzu, die eigentlich den Benutzer idendifizieren sollen. Doch Vorsicht: Diese Angaben können durch den Proxy unter Umständen manipuliert werden.
Folgender Code behebt das Problem:
Quelle: http://lists.phpbar.de/pipermail/php/Week-of-Mon-20040322/007749.html
Folgender Code behebt das Problem:
<?php
function get_real_ip()
{
$client_ip = (isset($_SERVER['HTTP_CLIENT_IP'])) ? $_SERVER['HTTP_CLIENT_IP'] : '';
$x_forwarded_for = (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
$remote_addr = (isset($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : '';
if (!empty($client_ip))
{
$ip_expl = explode('.',$client_ip);
$referer = explode('.',$remote_addr);
if($referer[0] != $ip_expl[0])
{
$ip=array_reverse($ip_expl);
$return=implode('.',$ip);
}
else
{
$return = $client_ip;
}
}
else if (!empty($x_forwarded_for))
{
if(strstr($x_forwarded_for,','))
{
$ip_expl = explode(',',$x_forwarded_for);
$return = end($ip_expl);
}
else
{
$return = $x_forwarded_for;
}
}
else
{
$return = $remote_addr;
}
unset ($client_ip, $x_forwarded_for, $remote_addr, $ip_expl);
return $return;
}
?>
Quelle: http://lists.phpbar.de/pipermail/php/Week-of-Mon-20040322/007749.html
Daniel Marschall
ViaThinkSoft Mitbegründer
ViaThinkSoft Mitbegründer