Click Here
Pagrindinis Tinklaraštis Galerija Nuorodos Pradžiamoksliai Projektai

PHP

Some php programming tricks

Detect User's IP

<?php  
    
if(!function_exists("gethost")){
        function 
gethost($ip) {
            
$list=explode(","$ip);
            
$ret="";
            foreach(
$list as $item) {
                
$item=trim($item);
                
$tmp=@gethostbyaddr($item);
                if(
$tmp==$item$tmp="";
                
$ret.=$tmp." ";
            }
            
$ret=trim($ret);
            return 
addslashes($ret);
        }
    }

    function 
isValidIP($ip){
        if(
filter_var($ipFILTER_VALIDATE_IPFILTER_FLAG_IPV4) || 
        
filter_var($ipFILTER_VALIDATE_IPFILTER_FLAG_IPV6)) return true;
        else return 
false;
    }

    function 
getFirstIP($ip,$delim){
        if (
strstr($ip$delim)) {
            
$ips explode($delim$ip);
            foreach(
$ips as $ip) {
                if (
isValidIP($ip)) return $ip;
            }
            return 
$ips;
        } else return 
$ip;
    }

    if (isset(
$_SERVER["HTTP_X_FORWARDED_FOR"]) && !empty($_SERVER["HTTP_X_FORWARDED_FOR"]) && strcasecmp($_SERVER["HTTP_X_FORWARDED_FOR"], "unknown")) {
        
$ip $_SERVER["HTTP_X_FORWARDED_FOR"];
        
$proxy  $_SERVER["REMOTE_ADDR"];
    }
    elseif (isset(
$_SERVER['HTTP_VIA']) && !empty($_SERVER["HTTP_VIA"]) && strcasecmp($_SERVER["HTTP_VIA"], "unknown")) {
        if (
isValidIP($_SERVER['HTTP_VIA'])) $proxy=$_SERVER['HTTP_VIA'];
        
$ip $_SERVER["REMOTE_ADDR"];
    }
    elseif (isset(
$_SERVER["HTTP_CLIENT_IP"]) && !empty($_SERVER["HTTP_CLIENT_IP"]) && strcasecmp($_SERVER["HTTP_CLIENT_IP"], "unknown")) {
        
$ip $_SERVER["HTTP_CLIENT_IP"];
    }
    elseif (isset(
$_SERVER["REMOTE_ADDR"]) && !empty($_SERVER["REMOTE_ADDR"]) && strcasecmp($_SERVER["REMOTE_ADDR"], "unknown")) {
        
$ip $_SERVER["REMOTE_ADDR"];
    }
    else { 
        
$ip "unknown";
    }
    if (!
isValidIP($ip)) {
        
//todo: log invalid ip
        
$ret=getFirstIP($ip,',');
        if (
gettype($ret) == "array") {
            foreach (
$ret as $ip){
                
$ret2=getFirstIP($ip,':');
                if (
gettype($ret2) == "array"){
                    
$ip=false
                } else 
$ip $ret2;    
            }
        } else 
$ip $ret;
        if (!
isValidIP($ip)) {
            
$ret=getFirstIP($ip,':');
            if (
gettype($ret) == "array"){
            
$ip=false
            } else 
$ip $ret;
        }
    }
    if(
$ip != "unknown") {
        if (
isValidIP($ip)) $host=gethost($ip);
        else 
$host="[Invalid IP]";
    }
else 
$host "";

?>

Rašyti Komentarą

Get Your IP Instantly
Name:
Enter the text shown in the image (case sensitive):
Email:

Svetainės turino valdymo sistema parašyta nuo nulio. Puslapio kodas parašytas kiekvienam puslapiui atskirai.
Serverio Laikas: 20:44. Datos rodomos Lietuvos (GMT +2) laiko juostoje.
Vardas:
Slaptažodis:

Įveskite tekstą pateiktą žemiau (Didž. ir Maž. raidės skiriasi):


Registruotis
English
Lietuviškai

Apsilankymų Skaičiuoklė:
358 puslapio lankytojų.
3636 viso lankytojų.
Detailed Statistics