Artykuły na każdy temat
[PHP] Jak odczytać adres IP odwiedzającego stronę?
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Możemy także spróbować odczytać czy ktoś używa proxy jednakże ta metoda daje około 10% skuteczności gdyż większość serwerów proxy dobrze maskuje IP.
<?php
if($_SERVER['HTTP_CLIENT_IP'])
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
echo $ip;
?>
Ponadto można to obudować w funkcję:
<?php
function get_ip($ip2long = true)
{
if($_SERVER['HTTP_CLIENT_IP'])
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
if($ip2long)
{
$ip = ip2long($ip);
}
return $ip;
}
?>
Dla bardziej zawziętych można zawsze zapodać wersję obiektową:
<?php
class engine
{
// ciach
public function get_ip($ip2long = true)
{
if($_SERVER['HTTP_CLIENT_IP'])
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
if($ip2long)
{
$ip = ip2long($ip);
}
return $ip;
}
// ciach
}
?>
Jeżeli wykorzystujemy więcej niż jeden raz $ip, w którymś z formatów to warto trzymać te dane w polu aby nie katować CPU niepotrzebnie <?php
$_SERVER['HTTP_CLIENT_IP'];
$_SERVER['HTTP_COMING_FROM'];
$_SERVER['HTTP_FORWARDED'];
$_SERVER['HTTP_FORWARDED_FOR'];
$_SERVER['HTTP_VIA'];
$_SERVER['HTTP_X_COMING_FROM'];
$_SERVER['HTTP_X_FORWARDED'];
$_SERVER['HTTP_X_FORWARDED_FOR'];
?>
Komentarze
Dodaj komentarz
CapaciousCore
Kod:
<?php $allowed_ips = ['127.0.0.1']; // Albo w postaci int przy pomocy ip2long() if(in_array($ip, $allowed_ips) === true) { // Dla wybrańców } else { // Coś tutaj? } ?>