Ziyaretçi İp Adresini ve Hostname Almak
Ağustos 27th, 2008 Posted in PHP

Bazen projelerinizde ziyaretçinin yada yorum yazanların ip adreslerini loglamak gerekebilir.PHP de ziyaretçinin ip adresini (proxy yada gerçek) hostname rahatça alabiliriz.
Özellikle yorum ve anket uygulamalarında başarılı sonuç verecektir.Sürekli spam gelen ip adresleride cabası.
Normal ip adresini almak için :
Hostname almak için:
Proxy kullanan ziyaretçinin gerçek ip adresini ögrenmek için:
<?
function real_ip_adress() {
global $HTTP_SERVER_VARS;
$gizli_ipler = array( ‘10.0.0.’, ‘192.168.’, ‘127.0.0.’, ‘172.16.0.’ );
if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != ” ) {
$ip_strings = explode( ‘,’,$_SERVER['HTTP_X_FORWARDED_FOR']);
foreach($ip_strings as $k => $v) {
if( empty($v) ) {
unset( $ip_strings[$k] );
} else {
if(!isset($ip_string)) {
$ip_string = $v;
}
}
}
}
if( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != ” ) {
$ip_strings[] = $_SERVER['REMOTE_ADDR'];
if(!isset($ip_string)) {
$ip_string = $_SERVER['REMOTE_ADDR'];
}
}
foreach($ip_strings as $k1 => $ip) {
foreach($gizli_ipler as $k2 => $pip) {
if(strpos($ip, $pip) === 0) {
unset($ip_strings[$k1]); break;
}
}
}
if(!empty($ip_strings) ) {
foreach( $ip_strings as $v ) {
if(!empty($v)) {
$ip_string = $v;
$is_local_ip = false;
break;
}
}
} else {
$is_local_ip = true;
}
return $ip_string;
}
$ip = real_ip_adress();echo ‘IP Adresi : ‘.$ip;
?>
function real_ip_adress() {
global $HTTP_SERVER_VARS;
$gizli_ipler = array( ‘10.0.0.’, ‘192.168.’, ‘127.0.0.’, ‘172.16.0.’ );
if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != ” ) {
$ip_strings = explode( ‘,’,$_SERVER['HTTP_X_FORWARDED_FOR']);
foreach($ip_strings as $k => $v) {
if( empty($v) ) {
unset( $ip_strings[$k] );
} else {
if(!isset($ip_string)) {
$ip_string = $v;
}
}
}
}
if( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != ” ) {
$ip_strings[] = $_SERVER['REMOTE_ADDR'];
if(!isset($ip_string)) {
$ip_string = $_SERVER['REMOTE_ADDR'];
}
}
foreach($ip_strings as $k1 => $ip) {
foreach($gizli_ipler as $k2 => $pip) {
if(strpos($ip, $pip) === 0) {
unset($ip_strings[$k1]); break;
}
}
}
if(!empty($ip_strings) ) {
foreach( $ip_strings as $v ) {
if(!empty($v)) {
$ip_string = $v;
$is_local_ip = false;
break;
}
}
} else {
$is_local_ip = true;
}
return $ip_string;
}
$ip = real_ip_adress();echo ‘IP Adresi : ‘.$ip;
?>











