begin process at 2013 05 26 11:40:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > SAUVEGARDE ADRESSE IP VISITEUR

SAUVEGARDE ADRESSE IP VISITEUR


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :adresse ip, enregistrement visiteur, enregistrement ip, sauvegarde ip Niveau :Initié Date de création :12/01/2013 Date de mise à jour :22/01/2013 22:02:39 Vu / téléchargé :20 586 / 179

Auteur : michael33512

Ecrire un message privé
Site perso
Commentaire sur cette source (40)
Ajouter un commentaire et/ou une note

 Description

script de sauvegarde adresse ip visiteur sauf les adresses des bots et autre crawler, un cookie est émis pour une durée variable selon le webmaster afin de n'enregistré que une seul fois par durée le visiteur, ce script a pour but de fournir des statistiques sur l'origines des visiteurs afin de permettre d'optimiser les pages et le référencement en fonction de l'origine des visiteurs et d'éliminer les spammeurs, ainsi que de localiser le pays grace au fichier csv

Source

  • <?php
  • header('Content-Type: text/html; charset=ISO-8859-1');//fonction définnissant le charset
  • header('X-UA-Compatible: IE=edge');//fonction supprimant le mode compatibilité d'internet explorer 10
  • setcookie('traceur', 'espion', (time() + 43200));//fonction cookie permettant de ne sauvegarde que une seul fois l'adresse pendant une ppériode définie
  • function get_ip()//fonction détectant de la meilleur façon possible la vraie adresse ip pour autant que le proxy soit transparent
  • {
  • global $REMOTE_ADDR;
  • global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
  • global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;
  • if (empty($REMOTE_ADDR) && PMA_getenv('REMOTE_ADDR')) {
  • $REMOTE_ADDR = PMA_getenv('REMOTE_ADDR');
  • }
  • if (empty($HTTP_X_FORWARDED_FOR) && PMA_getenv('HTTP_X_FORWARDED_FOR')) {
  • $HTTP_X_FORWARDED_FOR = PMA_getenv('HTTP_X_FORWARDED_FOR');
  • }
  • if (empty($HTTP_X_FORWARDED) && PMA_getenv('HTTP_X_FORWARDED')) {
  • $HTTP_X_FORWARDED = PMA_getenv('HTTP_X_FORWARDED');
  • }
  • if (empty($HTTP_FORWARDED_FOR) && PMA_getenv('HTTP_FORWARDED_FOR')) {
  • $HTTP_FORWARDED_FOR = PMA_getenv('HTTP_FORWARDED_FOR');
  • }
  • if (empty($HTTP_FORWARDED) && PMA_getenv('HTTP_FORWARDED')) {
  • $HTTP_FORWARDED = PMA_getenv('HTTP_FORWARDED');
  • }
  • if (empty($HTTP_VIA) && PMA_getenv('HTTP_VIA')) {
  • $HTTP_VIA = PMA_getenv('HTTP_VIA');
  • }
  • if (empty($HTTP_X_COMING_FROM) && PMA_getenv('HTTP_X_COMING_FROM')) {
  • $HTTP_X_COMING_FROM = PMA_getenv('HTTP_X_COMING_FROM');
  • }
  • if (empty($HTTP_COMING_FROM) && PMA_getenv('HTTP_COMING_FROM')) {
  • $HTTP_COMING_FROM = PMA_getenv('HTTP_COMING_FROM');
  • }
  • if (!empty($REMOTE_ADDR)) {
  • $direct_ip = $REMOTE_ADDR;
  • }
  • $proxy_ip = '';
  • if (!empty($HTTP_X_FORWARDED_FOR)) {
  • $proxy_ip = $HTTP_X_FORWARDED_FOR;
  • } elseif (!empty($HTTP_X_FORWARDED)) {
  • $proxy_ip = $HTTP_X_FORWARDED;
  • } elseif (!empty($HTTP_FORWARDED_FOR)) {
  • $proxy_ip = $HTTP_FORWARDED_FOR;
  • } elseif (!empty($HTTP_FORWARDED)) {
  • $proxy_ip = $HTTP_FORWARDED;
  • } elseif (!empty($HTTP_VIA)) {
  • $proxy_ip = $HTTP_VIA;
  • } elseif (!empty($HTTP_X_COMING_FROM)) {
  • $proxy_ip = $HTTP_X_COMING_FROM;
  • } elseif (!empty($HTTP_COMING_FROM)) {
  • $proxy_ip = $HTTP_COMING_FROM;
  • }
  • if (empty($proxy_ip)) {
  • return $direct_ip;
  • } else {
  • $is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);
  • if ($is_ip && (count($regs) > 0)) {
  • return $regs[0];
  • } else {
  • return FALSE;
  • }
  • }
  • }
  • function PMA_getenv($var_name) {
  • if (isset($_SERVER[$var_name])) {
  • return $_SERVER[$var_name];
  • } elseif (isset($_ENV[$var_name])) {
  • return $_ENV[$var_name];
  • } elseif (getenv($var_name)) {
  • return getenv($var_name);
  • } elseif (function_exists('apache_getenv')
  • && apache_getenv($var_name, true)) {
  • return apache_getenv($var_name, true);
  • }
  • return '';
  • }
  • $ip = get_ip();//fonction ip client
  • $fournisseur = gethostbyaddr($_SERVER['REMOTE_ADDR']);//fonction détectant fournisseur d'accès
  • $calendrier = date ("d-m-y");//fonction date calendrier
  • $horaire = date ("H:i:s");//fonction horaire
  • $langage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];//fonction langage client
  • $port_client = $_SERVER['REMOTE_PORT'];//fonction port de connection client
  • $ip_client = get_ip();//fonction ip client
  • $connection = $_SERVER['HTTP_CONNECTION'];//fonction détectant le type de connection
  • $protocol = $_SERVER['SERVER_PROTOCOL'];//fonction détectant le protocol
  • $agent = $_SERVER['HTTP_USER_AGENT'];//fonction détectant l'user agent
  • $provenance = $_SERVER['HTTP_REFERER'];//fonction détectant la provenance du visiteur
  • $v6 = preg_match("/^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", $ip);//fonction permettant de filtré les adresses ipv6
  • $v4 = preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/", $ip);//fonction permettant de filtré les adresses ipv4
  • if ( $v6 != 0 )
  • $format = "adresse IP_v6";
  • elseif ( $v4 != 0 )
  • $format = "adresse IP_v4";
  • else
  • $format = "non identifier";
  • function getOS( $ua = '' )//fonction détectant le système d'exploitation
  • {
  • if(!$ua) $ua = $_SERVER['HTTP_USER_AGENT'];
  • $os = 'Système d\'exploitation non detecte';
  • $os_arr = Array('/Windows NT 6.2/' => 'windows 8',
  • '/Windows NT 6.1/' => 'Windows Seven',
  • '/Windows NT 6.0/' => 'Windows Vista',
  • '/Windows NT 5.2/' => 'Windows Server 2003',
  • '/Windows NT 5.1/' => 'Windows XP',
  • '/Windows NT 5.0/' => 'Windows 2000',
  • '/Windows NT/' => 'Windows NT',
  • '/Windows CE/' => 'Windows Mobile',
  • '/Win 9x 4.90/' => 'Windows Millenium',
  • '/Windows 98/' => 'Windows 98',
  • '/Windows 95/' => 'Windows 95',
  • '/Win95/' => 'Windows 95',
  • '/Ubuntu/' => 'Linux Ubuntu',
  • '/Fedora/' => 'Linux Fedora',
  • '/Linux/' => 'Linux',
  • '/Unix/' => 'Unix',
  • '/Macintosh/' => 'Mac',
  • '/Mac OS X/' => 'Mac OS X',
  • '/FreeBSD/' => 'FreeBSD',
  • '/Unix/' => 'Unix',
  • '/Playstation portable/' => 'PSP',
  • '/OpenSolaris/' => 'SunOS',
  • '/SunOS/' => 'SunOS',
  • '/Nintendo Wii/' => 'Nintendo Wii',
  • '/Mac/' => 'Mac',
  • '/AIX/' => 'AIX',
  • '/IRIX/' => 'IRIX',
  • '/BEOS/' => 'Beos',
  • '/Android/' => 'Android',
  • '/BlackBerry/' => 'Blackberry'
  • );
  • $ua = strtolower($ua);
  • foreach( $os_arr as $k => $v )
  • {
  • if(preg_match(strtolower($k), $ua))
  • {
  • $os = $v;
  • break;
  • }
  • }
  • return $os;
  • }
  • $systeme = getOS( $_SERVER['HTTP_USER_AGENT'] );
  • function generer_num_ip($addr_ip)//transformation adresse ip en numéro ip
  • {
  • $decomposition = preg_split( "/[.]+/", $addr_ip);
  • $numip = (double) (16777216*$decomposition[0] + 65536*$decomposition[1] + 256*$decomposition[2] + $decomposition[3]);
  • return( $numip );
  • }
  • function process_csv($file, $ipnum)
  • {
  • $handle = fopen($file, "r");
  • while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
  • {
  • if( ($ipnum >= $data[2]) &&
  • ($ipnum <= $data[3]))
  • {
  • break;
  • }
  • }
  • fclose($handle);
  • return $data[5];
  • }
  • $ipnum = generer_num_ip($ip);
  • $country = process_csv ('GeoIPCountryWhois.csv', $ipnum);//geoipcoutrywhois, dossier csv contenant la liste des pays fiable à 90%
  • $pays = $country;
  • // formattage de la page
  • $save = "";
  • $save = ('<div class="gauche">'.'heure de visite :&nbsp;'.$horaire.'<br />'.'date de visite :&nbsp;'.$calendrier.'<br />'.'langue du visiteur :&nbsp;'.$langage.'<br />'.'port pc client :&nbsp;'.$port_client.'<br />'.'adresse ip client :&nbsp;'.$ip_client.'<br />'.'type d\'adresse :&nbsp;'.$format.'<br />'.'fournisseur client :&nbsp;'.$fournisseur.'<br />'.'connection client :&nbsp;'.$connection.'<br />'.'protocol client :&nbsp;'.$protocol.'<br />'.'système d\'exploitation :&nbsp;'.$systeme.'<br />'.'user-agent :&nbsp;'.$agent.'<br />'.'provenance :&nbsp;'.$provenance.'<br />'.'pays :&nbsp;'.$pays.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'</div>'."\n");
  • if($_COOKIE['traceur'])
  • {
  • }
  • elseif (preg_match("/msnbot/i", $fournisseur))//exclusion bots msn
  • {
  • return false;
  • }
  • elseif (preg_match("/crawl/i", $fournisseur))//exclusion bots crawl google
  • {
  • return false;
  • }
  • elseif (preg_match("/phx.gbl/i", $fournisseur))//exclusion bots phx
  • {
  • return false;
  • }
  • elseif (preg_match("/zvelo/i", $fournisseur))//exclusion bots zvelo
  • {
  • return false;
  • }
  • elseif($agent == 'Aboundex/0.2 (http://www.aboundex.com/crawler/)')//exclusion bots aboundex
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/5.0 (compatible; OpenindexSpider; +http://www.openindex.io/en/webmasters/spider.html)')//exclusion bots open index
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0; +http://fulltext.sblog.cz/screenshot/)')//exclusion bots seznam
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)')//exclusion bots google
  • {
  • return false;
  • }
  • elseif($agent == ' Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) NOT Firefox/3.5')//exclusion bots yahoo
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SLCC1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.30729; .NET CLR 3.5.30707)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325; .NET CLR 2.0.40607; .NET CLR 3.0.04506.648)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.04506.648)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SLCC1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.30729)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)')//exclusion bots bing
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)')//exclusion bots msn
  • {
  • return false;
  • }
  • elseif($agent == 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (support.voilabot@orange-ftgroup.com)')//exclusion bots voila
  • {
  • return false;
  • }
  • elseif($agent == 'DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)')//exclusion bots google mobile
  • {
  • return false;
  • }
  • elseif($agent == 'SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)')//exclusion bots google mobile
  • {
  • return false;
  • }
  • else
  • {
  • // partie enregistrement de la page
  • $fp = fopen('ip.html',a);
  • fwrite($fp,$save);
  • fclose($fp);
  • }
  • ?>
<?php
header('Content-Type: text/html; charset=ISO-8859-1');//fonction définnissant le charset
header('X-UA-Compatible: IE=edge');//fonction supprimant le mode compatibilité d'internet explorer 10
setcookie('traceur', 'espion', (time() + 43200));//fonction cookie permettant de ne sauvegarde que une seul fois l'adresse pendant une ppériode définie
function get_ip()//fonction détectant de la meilleur façon possible la vraie adresse ip pour autant que le proxy soit transparent
{
    global $REMOTE_ADDR;
    global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
    global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;
    if (empty($REMOTE_ADDR) && PMA_getenv('REMOTE_ADDR')) {
        $REMOTE_ADDR = PMA_getenv('REMOTE_ADDR');
    }
    if (empty($HTTP_X_FORWARDED_FOR) && PMA_getenv('HTTP_X_FORWARDED_FOR')) {
        $HTTP_X_FORWARDED_FOR = PMA_getenv('HTTP_X_FORWARDED_FOR');
    }
    if (empty($HTTP_X_FORWARDED) && PMA_getenv('HTTP_X_FORWARDED')) {
        $HTTP_X_FORWARDED = PMA_getenv('HTTP_X_FORWARDED');
    }
    if (empty($HTTP_FORWARDED_FOR) && PMA_getenv('HTTP_FORWARDED_FOR')) {
        $HTTP_FORWARDED_FOR = PMA_getenv('HTTP_FORWARDED_FOR');
    }
    if (empty($HTTP_FORWARDED) && PMA_getenv('HTTP_FORWARDED')) {
        $HTTP_FORWARDED = PMA_getenv('HTTP_FORWARDED');
    }
    if (empty($HTTP_VIA) && PMA_getenv('HTTP_VIA')) {
        $HTTP_VIA = PMA_getenv('HTTP_VIA');
    }
    if (empty($HTTP_X_COMING_FROM) && PMA_getenv('HTTP_X_COMING_FROM')) {
        $HTTP_X_COMING_FROM = PMA_getenv('HTTP_X_COMING_FROM');
    }
    if (empty($HTTP_COMING_FROM) && PMA_getenv('HTTP_COMING_FROM')) {
        $HTTP_COMING_FROM = PMA_getenv('HTTP_COMING_FROM');
    }
    if (!empty($REMOTE_ADDR)) {
        $direct_ip = $REMOTE_ADDR;
    }
    $proxy_ip     = '';
    if (!empty($HTTP_X_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_X_FORWARDED_FOR;
    } elseif (!empty($HTTP_X_FORWARDED)) {
        $proxy_ip = $HTTP_X_FORWARDED;
    } elseif (!empty($HTTP_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_FORWARDED_FOR;
    } elseif (!empty($HTTP_FORWARDED)) {
        $proxy_ip = $HTTP_FORWARDED;
    } elseif (!empty($HTTP_VIA)) {
        $proxy_ip = $HTTP_VIA;
    } elseif (!empty($HTTP_X_COMING_FROM)) {
        $proxy_ip = $HTTP_X_COMING_FROM;
    } elseif (!empty($HTTP_COMING_FROM)) {
        $proxy_ip = $HTTP_COMING_FROM;
    }
    if (empty($proxy_ip)) {
        return $direct_ip;
    } else {
        $is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);
        if ($is_ip && (count($regs) > 0)) {
            return $regs[0];
        } else {
          return FALSE;
        }
    } 
}
function PMA_getenv($var_name) {
    if (isset($_SERVER[$var_name])) {
        return $_SERVER[$var_name];
    } elseif (isset($_ENV[$var_name])) {
        return $_ENV[$var_name];
    } elseif (getenv($var_name)) {
        return getenv($var_name);
    } elseif (function_exists('apache_getenv')
     && apache_getenv($var_name, true)) {
        return apache_getenv($var_name, true);
    }

    return '';
}
$ip = get_ip();//fonction ip client
$fournisseur = gethostbyaddr($_SERVER['REMOTE_ADDR']);//fonction détectant fournisseur d'accès
$calendrier = date ("d-m-y");//fonction date calendrier
$horaire = date ("H:i:s");//fonction horaire 
$langage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];//fonction langage client
$port_client = $_SERVER['REMOTE_PORT'];//fonction port de connection client
$ip_client = get_ip();//fonction ip client
$connection = $_SERVER['HTTP_CONNECTION'];//fonction détectant le type de connection
$protocol = $_SERVER['SERVER_PROTOCOL'];//fonction détectant le protocol
$agent = $_SERVER['HTTP_USER_AGENT'];//fonction détectant l'user agent
$provenance = $_SERVER['HTTP_REFERER'];//fonction détectant la provenance du visiteur
$v6 = preg_match("/^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", $ip);//fonction permettant de filtré les adresses ipv6
$v4 = preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/", $ip);//fonction permettant de filtré les adresses ipv4
if ( $v6 != 0 )
$format = "adresse IP_v6";
elseif ( $v4 != 0 )
$format = "adresse IP_v4";
else
$format = "non identifier";

function getOS( $ua = '' )//fonction détectant le système d'exploitation
{
if(!$ua) $ua = $_SERVER['HTTP_USER_AGENT'];
$os = 'Système d\'exploitation non detecte';
$os_arr = Array('/Windows NT 6.2/'       => 'windows 8',
                '/Windows NT 6.1/'       => 'Windows Seven',
                '/Windows NT 6.0/'       => 'Windows Vista',
                '/Windows NT 5.2/'       => 'Windows Server 2003',
                '/Windows NT 5.1/'       => 'Windows XP',
                '/Windows NT 5.0/'       => 'Windows 2000',
                '/Windows NT/'           => 'Windows NT',
                '/Windows CE/'           => 'Windows Mobile',
                '/Win 9x 4.90/'          => 'Windows Millenium',
                '/Windows 98/'           => 'Windows 98',
                '/Windows 95/'           => 'Windows 95',
                '/Win95/'                => 'Windows 95',
                '/Ubuntu/'               => 'Linux Ubuntu',
                '/Fedora/'               => 'Linux Fedora',
                '/Linux/'                => 'Linux',
                '/Unix/'                 => 'Unix',
                '/Macintosh/'            => 'Mac',
                '/Mac OS X/'             => 'Mac OS X',
                '/FreeBSD/'              => 'FreeBSD',
                '/Unix/'                 => 'Unix',
                '/Playstation portable/' => 'PSP',
                '/OpenSolaris/'          => 'SunOS',
                '/SunOS/'                => 'SunOS',
                '/Nintendo Wii/'         => 'Nintendo Wii',
                '/Mac/'                  => 'Mac',
				'/AIX/'                  => 'AIX',
				'/IRIX/'                 => 'IRIX',
				'/BEOS/'                 => 'Beos',
				'/Android/'              => 'Android',
				'/BlackBerry/'           => 'Blackberry'
                );
$ua = strtolower($ua);
foreach( $os_arr as $k => $v )
{
if(preg_match(strtolower($k), $ua))
{
$os = $v;
break;
}
}
return $os;
}
$systeme = getOS( $_SERVER['HTTP_USER_AGENT'] );

function generer_num_ip($addr_ip)//transformation adresse ip en numéro ip
{
$decomposition = preg_split( "/[.]+/", $addr_ip);
$numip = (double) (16777216*$decomposition[0] + 65536*$decomposition[1] + 256*$decomposition[2] + $decomposition[3]);
return( $numip );
}
function process_csv($file, $ipnum)
{
$handle = fopen($file, "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
if( ($ipnum >= $data[2]) &&
($ipnum <= $data[3]))
{
break;
}
}
fclose($handle);
return $data[5];
}
$ipnum = generer_num_ip($ip);
$country = process_csv ('GeoIPCountryWhois.csv', $ipnum);//geoipcoutrywhois, dossier csv contenant la liste des pays fiable à 90%
$pays = $country;

// formattage de la page
$save = "";
$save = ('<div class="gauche">'.'heure de visite :&nbsp;'.$horaire.'<br />'.'date de visite :&nbsp;'.$calendrier.'<br />'.'langue du visiteur :&nbsp;'.$langage.'<br />'.'port pc client :&nbsp;'.$port_client.'<br />'.'adresse ip client :&nbsp;'.$ip_client.'<br />'.'type d\'adresse :&nbsp;'.$format.'<br />'.'fournisseur client :&nbsp;'.$fournisseur.'<br />'.'connection client :&nbsp;'.$connection.'<br />'.'protocol client :&nbsp;'.$protocol.'<br />'.'système d\'exploitation :&nbsp;'.$systeme.'<br />'.'user-agent :&nbsp;'.$agent.'<br />'.'provenance :&nbsp;'.$provenance.'<br />'.'pays :&nbsp;'.$pays.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'</div>'."\n");
if($_COOKIE['traceur'])
{
}
elseif (preg_match("/msnbot/i", $fournisseur))//exclusion bots msn
{
return false;
}
elseif (preg_match("/crawl/i", $fournisseur))//exclusion bots crawl google
{
return false;
}
elseif (preg_match("/phx.gbl/i", $fournisseur))//exclusion bots phx
{
return false;
}
elseif (preg_match("/zvelo/i", $fournisseur))//exclusion bots zvelo
{
return false;
}
elseif($agent == 'Aboundex/0.2 (http://www.aboundex.com/crawler/)')//exclusion bots aboundex
{
return false;
}
elseif($agent == 'Mozilla/5.0 (compatible; OpenindexSpider; +http://www.openindex.io/en/webmasters/spider.html)')//exclusion bots open index
{
return false;
}
elseif($agent == 'Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0; +http://fulltext.sblog.cz/screenshot/)')//exclusion bots seznam
{
return false;
}
elseif($agent == 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)')//exclusion bots google
{
return false;
}
elseif($agent == ' Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) NOT Firefox/3.5')//exclusion bots yahoo
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SLCC1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.30729; .NET CLR 3.5.30707)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325; .NET CLR 2.0.40607; .NET CLR 3.0.04506.648)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.04506.648)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SLCC1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.30729)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)')//exclusion bots bing
{
return false;
}
elseif($agent == 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b')//exclusion bots msn
{
return false;
}
elseif($agent == 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)')//exclusion bots msn
{
return false;
}
elseif($agent == 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (support.voilabot@orange-ftgroup.com)')//exclusion bots voila
{
return false;
}
elseif($agent == 'DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)')//exclusion bots google mobile
{
return false;
}
elseif($agent == 'SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)')//exclusion bots google mobile
{
return false;
}
else
{
// partie enregistrement de la page
$fp = fopen('ip.html',a);
fwrite($fp,$save);
fclose($fp);
}
?>

 Conclusion

des commentaires ont été placer à la demande de stay, la fonction détection du pays à également été ajouter grace au fichier csv issu de chez maxmind

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • GeoIPCountryWhois.7zTélécharger ce fichier [Réservé aux membres club]1 004 658 octets

Télécharger le zip


 Historique

13 janvier 2013 10:00:13 :
remplacement de la fonction if isset et if empty par la fonction substr et strtolower pour détecter les bots sans adresse ip car avec la fonction if empty et if isset combiné les bots arrivait à etre enregistré
13 janvier 2013 16:54:36 :
avec les précédentes fonction pour élimination des bots certain arrivaient encore à passés, ici avec l'utilisation de preg_match les essaies sont concluent
14 janvier 2013 22:09:07 :
je reposte le code complet, je viend faire expret une page sur mon site et ces nickel aucun soucis de fonctionnement ou d'erreur
16 janvier 2013 22:21:10 :
mise a jour, j'aie rajouter la fonction permettant de detecter si ces une adresse ip_v4 ou ip_v6
22 janvier 2013 22:02:39 :
mise en place commentaire à la demande de stay mise en place de la détection du pays grace au fichier joint de type csv issu de maxmind

 Sources du même auteur

INTERDIRE LE PASSAGE DE FONCTION DANS UNE URL

 Sources de la même categorie

Source avec Zip Source avec une capture ESPACE MEMBRE VERSION 3 EN PHP 5 par JejeScript
FONCTION DE REDIRECTION par monpoke
Source avec Zip TCHAT PHP5, JAVASCRIPT->AJAX par JejeScript
Source avec Zip Source avec une capture ESPACE MEMBRE par JejeScript
Source avec Zip EXEMPLE DE GESTION DE PLUSIEURS STYLES CSS EN PHP par JejeScript

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture NOTATION CIDR DES ADRESSES IPV4 par vasty

Commentaires et avis

Commentaire de JLN le 13/01/2013 10:23:53

Je trouve qu'il y a beaucoup de variables dont on ne sait rien !
La page ip.html est où ?
Ceci doit surement être un extrait du script total, non ?
Pas très clair tout ca...

Commentaire de wanou95b le 13/01/2013 11:18:34

Je suis totalement d'accord avec JLN. D'où elles sortent toutes tes variables ? (fournisseur, ipclient...). Je suppose qu'elles sont initialisées à partir d'un http_host mais il faudrait être précis. A quel moment enregistres tu dans le fichier "ip.html" ?
Et puis une fonction me parait plus propre surtout, d'autant plus que tu utilises déjà des "return".  
exemple function log_visiteur($traceur).
Bref, je trouve ta source peu claire, et quand on partage une source, autant le faire le plus précisément possible.
Ceci dit l'entité des bots est très intéressante, et l'idée de fond est bonne.

Commentaire de michael33512 le 13/01/2013 15:36:32

la page ip.html ces une simple page vierge sur laquelle sont stocké les données, ici je n'avais dnnées que la partie stockage ip car aujourd'hui obtenir une ip est devenu très simple tout comme les cookies néamoins voici les infos demandés

<?php
function get_ip()
{
    global $REMOTE_ADDR;
    global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
    global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;
    if (empty($REMOTE_ADDR) && PMA_getenv('REMOTE_ADDR')) {
        $REMOTE_ADDR = PMA_getenv('REMOTE_ADDR');
    }
    if (empty($HTTP_X_FORWARDED_FOR) && PMA_getenv('HTTP_X_FORWARDED_FOR')) {
        $HTTP_X_FORWARDED_FOR = PMA_getenv('HTTP_X_FORWARDED_FOR');
    }
    if (empty($HTTP_X_FORWARDED) && PMA_getenv('HTTP_X_FORWARDED')) {
        $HTTP_X_FORWARDED = PMA_getenv('HTTP_X_FORWARDED');
    }
    if (empty($HTTP_FORWARDED_FOR) && PMA_getenv('HTTP_FORWARDED_FOR')) {
        $HTTP_FORWARDED_FOR = PMA_getenv('HTTP_FORWARDED_FOR');
    }
    if (empty($HTTP_FORWARDED) && PMA_getenv('HTTP_FORWARDED')) {
        $HTTP_FORWARDED = PMA_getenv('HTTP_FORWARDED');
    }
    if (empty($HTTP_VIA) && PMA_getenv('HTTP_VIA')) {
        $HTTP_VIA = PMA_getenv('HTTP_VIA');
    }
    if (empty($HTTP_X_COMING_FROM) && PMA_getenv('HTTP_X_COMING_FROM')) {
        $HTTP_X_COMING_FROM = PMA_getenv('HTTP_X_COMING_FROM');
    }
    if (empty($HTTP_COMING_FROM) && PMA_getenv('HTTP_COMING_FROM')) {
        $HTTP_COMING_FROM = PMA_getenv('HTTP_COMING_FROM');
    }
    if (!empty($REMOTE_ADDR)) {
        $direct_ip = $REMOTE_ADDR;
    }
    $proxy_ip     = '';
    if (!empty($HTTP_X_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_X_FORWARDED_FOR;
    } elseif (!empty($HTTP_X_FORWARDED)) {
        $proxy_ip = $HTTP_X_FORWARDED;
    } elseif (!empty($HTTP_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_FORWARDED_FOR;
    } elseif (!empty($HTTP_FORWARDED)) {
        $proxy_ip = $HTTP_FORWARDED;
    } elseif (!empty($HTTP_VIA)) {
        $proxy_ip = $HTTP_VIA;
    } elseif (!empty($HTTP_X_COMING_FROM)) {
        $proxy_ip = $HTTP_X_COMING_FROM;
    } elseif (!empty($HTTP_COMING_FROM)) {
        $proxy_ip = $HTTP_COMING_FROM;
    }
    if (empty($proxy_ip)) {
        return $direct_ip;
    } else {
        $is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);
        if ($is_ip && (count($regs) > 0)) {
            return $regs[0];
        } else {
          return FALSE;
        }
    }
}
function PMA_getenv($var_name) {
    if (isset($_SERVER[$var_name])) {
        return $_SERVER[$var_name];
    } elseif (isset($_ENV[$var_name])) {
        return $_ENV[$var_name];
    } elseif (getenv($var_name)) {
        return getenv($var_name);
    } elseif (function_exists('apache_getenv')
     && apache_getenv($var_name, true)) {
        return apache_getenv($var_name, true);
    }

    return '';
}
$ip = get_ip();
$fournisseur = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$calendrier = date ("d-m-y");
$jours = date (z);
$horaire = date ("H:i:s");
$langage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$port_client = $_SERVER['REMOTE_PORT'];
$port_serveur = $_SERVER['SERVER_PORT'];
$ip_client = get_ip();
$ip_serveur = $_SERVER['SERVER_ADDR'];
$connection = $_SERVER['HTTP_CONNECTION'];
$name_serveur = $_SERVER['SERVER_NAME'];
$protocol = $_SERVER['SERVER_PROTOCOL'];
$admin = $_SERVER['SERVER_ADMIN'];
$agent = $_SERVER['HTTP_USER_AGENT'];
?>

Commentaire de ghuysmans99 le 13/01/2013 18:38:50

Ajoute le code que tu viens de poster en commentaire dans la source (y'a un bouton "Modifier" quelque part). De plus, essaie d'utiliser un tableau, parce que la série de else if n'est pas forcément très claire. Avec une bête boucle, on voit tout de suite que le traitement est le même pour chaque UA...

Commentaire de jadu le 14/01/2013 14:53:23

dès le début il y a :[code]<div class="gauche">[/code]

mais pas fichier 'css' associé ???

On peut 'balancer' cette source telle quel sur un site ???
merci de m'éclairer !
Dans le doute, je ne note pas !

Commentaire de michael33512 le 14/01/2013 17:19:22

il est évident que div class gauche fait appelle à un style css en fichier externe dans mon cas mais libre à vous de mettre le style directement dans la div, et rajouter dans le header
setcookie('traceur', 'espion', (time() + 43200));
pour générer le cookie, la durée de celui dépend de vos propre paramètre, depuis que je l'aie mis en place, cela ma permit de voir que des visiteurs utilisait un BlackBerry, sachant cela je pourraie optimiser le site si je vois une augmentation de l'utilisation de genre d'outil et oui le script fonctionne parfaitement

Commentaire de jadu le 14/01/2013 18:23:32 8/10

Ok merci pour la réponse du "class=" mais j'aurai pu ne pas la poser, cette question, finalement !


Et faut-il placer le code de la function get_ip() ?
ou alors n'est-ce pas nécessaire ?
Je pense le placer dans la rubrique function de mon site ? oui ? non ?
si oui y a-t-il un lien à modifier ?

Commentaire de michael33512 le 14/01/2013 18:39:23

oui la function get_ip est a utiliser mais tu peu la simplifié si tu n'a pas besoin de tous les paramètres comme $port_client,$date etc, moi j'enregistre tous ces paramètres, pour récupérer l'ip j'aie utiliser cette méthode car recommander par le SEO, mais tu peu utiliser la méthode que tu veux,au plaisir

Commentaire de jadu le 14/01/2013 18:50:07

Bon ok merci.
je vais voir ce que ça donne !

Commentaire de jadu le 14/01/2013 19:12:24

et pour la ligne :
    $save = '(<div class="minus">'ip client :&nbsp;'.$ip_client.'<br />'.'fournisseur client :&nbsp;'.$fournisseur.'<br />'.'connection client :&nbsp;'.$connection.'<br />'.'protocol client :&nbsp;'.$protocol.'<br />'.'user-agent :&nbsp;'.$agent.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'</div>'."\n")';


nous avons :
( ! ) Parse error: syntax error, unexpected T_STRING in C:\wamp\www\detect-visit.php on line 104

c'est la ligne indiquée au dessus qui comporte donc un truc pas net ! j'ai juste remplacé "gauche" par "minus" ( sans jeu de mot déplacé ici ! )
j'ai mis les function en tête de ce fichier "detect-visit.php"
et Wampserver ne digère pas bien !!!

Que fais-je ???

Commentaire de michael33512 le 14/01/2013 20:22:54

je n'aie pas d'idée comme cela sans voir le code complet de ta page, pour ma part tous le script de détection ip se trouve dans le header avant même la déclaration doctype, la function set cookies est en premier, si tu a modifié une ligne tu n'aurais pas oublié un caractère d'échappement ou un point virgule, à tu placer le fichier ip.html pour la sauvegarde en mode 777, vérifie aussi que l'une des function du scipt n'entre pas en conflit avec ton script existant en ayant deux functions avec le meme nom, car sans connaitre le code complet de ta page, ce sont les premières réflexions qui me vienne en tete

Commentaire de jadu le 14/01/2013 20:28:05

ok, j'approfondis et je relance !

Commentaire de jadu le 14/01/2013 20:33:47

Voici le code :

<?php
function get_ip()
{
    global $REMOTE_ADDR;
    global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
    global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;
    if (empty($REMOTE_ADDR) && PMA_getenv('REMOTE_ADDR')) {
        $REMOTE_ADDR = PMA_getenv('REMOTE_ADDR');
    }
    if (empty($HTTP_X_FORWARDED_FOR) && PMA_getenv('HTTP_X_FORWARDED_FOR')) {
        $HTTP_X_FORWARDED_FOR = PMA_getenv('HTTP_X_FORWARDED_FOR');
    }
    if (empty($HTTP_X_FORWARDED) && PMA_getenv('HTTP_X_FORWARDED')) {
        $HTTP_X_FORWARDED = PMA_getenv('HTTP_X_FORWARDED');
    }
    if (empty($HTTP_FORWARDED_FOR) && PMA_getenv('HTTP_FORWARDED_FOR')) {
        $HTTP_FORWARDED_FOR = PMA_getenv('HTTP_FORWARDED_FOR');
    }
    if (empty($HTTP_FORWARDED) && PMA_getenv('HTTP_FORWARDED')) {
        $HTTP_FORWARDED = PMA_getenv('HTTP_FORWARDED');
    }
    if (empty($HTTP_VIA) && PMA_getenv('HTTP_VIA')) {
        $HTTP_VIA = PMA_getenv('HTTP_VIA');
    }
    if (empty($HTTP_X_COMING_FROM) && PMA_getenv('HTTP_X_COMING_FROM')) {
        $HTTP_X_COMING_FROM = PMA_getenv('HTTP_X_COMING_FROM');
    }
    if (empty($HTTP_COMING_FROM) && PMA_getenv('HTTP_COMING_FROM')) {
        $HTTP_COMING_FROM = PMA_getenv('HTTP_COMING_FROM');
    }
    if (!empty($REMOTE_ADDR)) {
        $direct_ip = $REMOTE_ADDR;
    }
    $proxy_ip     = '';
    if (!empty($HTTP_X_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_X_FORWARDED_FOR;
    } elseif (!empty($HTTP_X_FORWARDED)) {
        $proxy_ip = $HTTP_X_FORWARDED;
    } elseif (!empty($HTTP_FORWARDED_FOR)) {
        $proxy_ip = $HTTP_FORWARDED_FOR;
    } elseif (!empty($HTTP_FORWARDED)) {
        $proxy_ip = $HTTP_FORWARDED;
    } elseif (!empty($HTTP_VIA)) {
        $proxy_ip = $HTTP_VIA;
    } elseif (!empty($HTTP_X_COMING_FROM)) {
        $proxy_ip = $HTTP_X_COMING_FROM;
    } elseif (!empty($HTTP_COMING_FROM)) {
        $proxy_ip = $HTTP_COMING_FROM;
    }
    if (empty($proxy_ip)) {
        return $direct_ip;
    } else {
        $is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);
        if ($is_ip && (count($regs) > 0)) {
            return $regs[0];
        } else {
          return FALSE;
        }
    }
}
function PMA_getenv($var_name) {
    if (isset($_SERVER[$var_name])) {
        return $_SERVER[$var_name];
    } elseif (isset($_ENV[$var_name])) {
        return $_ENV[$var_name];
    } elseif (getenv($var_name)) {
        return getenv($var_name);
    } elseif (function_exists('apache_getenv')
     && apache_getenv($var_name, true)) {
        return apache_getenv($var_name, true);
    }

    return '';
}
$ip = get_ip();
$fournisseur = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$calendrier = date ("d-m-y");
$jours = date (z);
$horaire = date ("H:i:s");
$langage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$port_client = $_SERVER['REMOTE_PORT'];
$port_serveur = $_SERVER['SERVER_PORT'];
$ip_client = get_ip();
$ip_serveur = $_SERVER['SERVER_ADDR'];
$connection = $_SERVER['HTTP_CONNECTION'];
$name_serveur = $_SERVER['SERVER_NAME'];
$protocol = $_SERVER['SERVER_PROTOCOL'];
$admin = $_SERVER['SERVER_ADMIN'];
$agent = $_SERVER['HTTP_USER_AGENT'];
?>


    <?php
    // formattage de la page
    $save = "";
    $save = '(<div class="minus">'ip client :&nbsp;'.$ip_client.'<br />'.'fournisseur client :&nbsp;'.$fournisseur.'<br />'.'connection client :&nbsp;'.$connection.'<br />'.'protocol client :&nbsp;'.$protocol.'<br />'.'user-agent :&nbsp;'.$agent.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'</div>'."\n")';
    if($_COOKIE['traceur'])
    {
    }
    elseif (preg_match("/msnbot/i", $fournisseur))
    {
    return false;
    }
    elseif (preg_match("/crawl/i", $fournisseur))
    {
    return false;
    }
    elseif($agent == 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)')//bots google
    {
    return false;
    }
    elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648)')//bots msn
    {
    return false;
    }
    elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325; .NET CLR 2.0.40607; .NET CLR 3.0.04506.648)')//bots msn
    {
    return false;
    }
    elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SLCC1; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 3.0.30729)')// bots msn
    {
    return false;
    }
    elseif($agent == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)')//bots msn
    {
    return false;
    }
    elseif($agent == 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)')//bots bing
    {
    return false;
    }
    elseif($agent == 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) BingPreview/1.0b')
    {
    return false;
    }
    elseif($agent == 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)')//bots msn
    {
    return false;
    }
    elseif($agent == 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)')//bots msn
    {
    return false;
    }
    elseif($agent == 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (support.voilabot@orange-ftgroup.com)')//bots voila
    {
    return false;
    }
    elseif($agent == 'DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)')//bots google mobile
    {
    return false;
    }
    elseif($agent == 'SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)')//bots google mobile
    {
    return false;
    }
    else
    {
    // partie enregistrement de la page
    $fp = fopen('ip.html',a);
    fwrite($fp,$save);
    fclose($fp);
    }
    ?>

et la réponse de WAMPSERVER :
( ! ) Parse error: syntax error, unexpected T_STRING in C:\wamp\www\GHU\detect-visit.php on line 97

c'est passé de 104 à 97 car j'ai viré tout le début qui était peut-être cause d'erreur, mais en fait  non !

Pourtant si ça marche avec toi !!!

... à suivre

Commentaire de michael33512 le 14/01/2013 20:56:16

serais ce la methode global pour détecter l'ip qui poserait problème peut etre

Commentaire de michael33512 le 14/01/2013 20:58:41

voila les infos que je récupère avec ce script

heure de visite : 20:51:53
date de visite : 14-01-13
langue du visiteur :
port pc client : 57534
adresse ip client : 27.156.97.146
fournisseur client : 146.97.156.27.broad.fz.fj.dynamic.163data.com.cn
connection client :
protocol client : HTTP/1.0
user-agent : Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0

tu vois sa marche nickel, sa doit etre une bétise

Commentaire de pitu69 le 14/01/2013 21:35:33

Salut,

Ce code m'interesse mais j'ai le même message d'erreur que jadu. J'ai le même fichier que lui

Commentaire de michael33512 le 14/01/2013 21:45:53

ce type d'erreur ce produit quand il manque un caractère d'échappement lorsque par exemple 3 apostrophes ou 3 guillemets ce suive dans une chaine, j'aie comme vous pouvez le voir un exemple des infos que je récupère, à mon avis on ajoutant mon code au votre il doit y avoir un caractère de trop ou trop peu, si vous venez sur mon site vous verrez que je le script fonctionne car je récupéreraie votre visite, http://www.schema-electrique.be

Commentaire de sazaju le 14/01/2013 21:46:10

La moindre des choses, c'est de fournir un code qui fonctionne, c'est à dire qu'il suffit de copier-coller et hop ça marche, donc fournir toutes les dépendances. Là tu n'as fourni qu'un seul fichier et j'ai presque envie de dire que c'est le fichier le moins intéressant : une série de if pour faire que des false (qui peut être aisément remplacée par un tableau et un unique appel à in_array(...)), alors qu'à côté tu nous sors une fonction pour avoir l'IP bien plus riche, comme si de rien n'était : je cite "obtenir une ip est devenu très simple", et là tu nous sort un script 10x plus compliqué que le code que tu as posté. Si obtenir l'IP est simple, alors pourquoi avoir posté un série de if et un appel à une autre fonction ?

Modifie et upload tous les fichiers nécessaires, sans exception, que les gens n'aient qu'à récupérer et essayer sans que ça plante. Les gens ont autre chose à faire que de te tirer les vers du nez pour avoir un code qui marche. Mieux vaut avoir trop que pas assez (ou qui peut le plus peut le moins, au choix).

Commentaire de pitu69 le 14/01/2013 22:03:56

J'ai changer la ligne 97 par
$save = '<div class="gauche">ip client :&nbsp;'.$ip_client.'<br />'.'fournisseur client :&nbsp;'.$fournisseur.'<br />'.'connection client :&nbsp;'.$connection.'<br />'.'protocol client :&nbsp;'.$protocol.'<br />'.'user-agent :&nbsp;'.$agent.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'</div>'.'';

et ça marche.

Par contre je ne comprends pas tout le résultat de la dernière ligne:

user-agent : Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11

Qui peux m'éclairer?

Commentaire de michael33512 le 14/01/2013 22:12:00

bon j'aie reposter tout complet, je vois pas ce qui fonctionne pas je viens de faire une page pour le test et ces nickel

Commentaire de michael33512 le 14/01/2013 22:15:46

pitu69 je vois que vous avez supprimer \n pour le retour ligne, sachez que certain serveur requière le
\r suivit de \n, mais cela dépend du serveur

Commentaire de michael33512 le 14/01/2013 22:21:19

voici un site pour ceux qui veule détail et explication sur les users agents
http://danzcontrib2.free.fr/useragents.php

Commentaire de jadu le 15/01/2013 11:12:34

Euh, je me lève .... 11 h 09 !!!

SAZAJU tu n'exagères pas un peu ? je trouve que c'est normal qu'on ait à réfléchir sur le code qu'on utilise sans que ce ne soit QUE du copier-coller. C'est ainsi que j'ai pu apprendre des choses grâce aux codes placés sur ce magnifique site ( et aussi avec l'aide des livres-tutos très bien construits )

Mais c'est vrai qu'avec celui-ci ... ya du boulot pour éclaicir !

je m'y remets ce soir ... ou demain !

Commentaire de jadu le 15/01/2013 11:29:22

J'ai pris le temps de faire un copier coller de ce que tu m'as adressé en MP en lieu et place de mon code dans mon fichier "detect-visit.php".
et voici la réponse de Wampserveur en local :

( ! ) Notice: Use of undefined constant z - assumed 'z' in C:\wamp\www\GHU\detect-visit.php on line 83
Call Stack
# Time Memory Function Location
1 0.0007 730504 {main}( ) ..\detect-visit.php:0

( ! ) Warning: include(ip-track.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\GHU\detect-visit.php on line 109
Call Stack
# Time Memory Function Location
1 0.0007 730504 {main}( ) ..\detect-visit.php:0

( ! ) Warning: include() [function.include]: Failed opening 'ip-track.php' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\GHU\detect-visit.php on line 109
Call Stack
# Time Memory Function Location
1 0.0007 730504 {main}( ) ..\detect-visit.php:0

j'ai vu pour date(z) !!!
j'ai pas le temps pour le reste ... mais d'ici ce soir le smilblick aura sûrement avancé !
bonne journée à tous !
à ce soir !

Commentaire de michael33512 le 15/01/2013 16:39:38

jadu, failed open Stream, ces la permission sur le fichier ip.html, tu dois le placer en 777, pour lecture ecriture, autre conflits viennent du fait que wamp est une application Windows, mon serveur est sous unix avec apache, ces pour cela qu'avec le \n à la fin de fonction page vous aviez un soucis, en effet Windows requière \r\n pour le retourà la ligne, bonne suite

Commentaire de michael33512 le 16/01/2013 22:53:28

j'aie rajouter une fonction permettant de différencier les adresse ipv4 des ipv6

dans la fonction save rajouter ceci si vous désirez sauvegarder .'type d\'adresse'.$format.'<br />'.

pour la détection rajouter ceci après le script de détection ip

$v6 = preg_match("/^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", $ip);
$v4 = preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/", $ip);
if ( $v6 != 0 )
$format = "adresse IP_v6";
elseif ( $v4 != 0 )
$format = "adresse IP_v4";
else
$format = "non identifier";

Commentaire de ghuysmans99 le 16/01/2013 23:13:51

À mon humble avis, pas besoin d'une regex, suffit de voir si ':' est présent dans la chaine :

if (strpos($ip, ':') !== false) $format = 'IPv6';
elseif (strpos($ip, '.')) $format = 'IPv4';
else $format = 'unknown';

Et je ne sais même pas si ça a un intérêt de gérer un autre cas que IPv4/IPv6...
Quid de la màj du source ? Le but ici est de proposer un code propre, qui pourrait aider les débutants !

Commentaire de michael33512 le 16/01/2013 23:42:20

l'interet de differencier les deux type d'adresse ces pour la géolocalisation

Commentaire de jadu le 17/01/2013 11:34:52

Il serait urgent que tu corriges le code d'origine, pour rester crédible !!!  :)

Commentaire de michael33512 le 17/01/2013 16:49:53

le code d'origine qui est en haut je le mes a jours à chaque fois avec la fonction modifier code, mais comme je l'aie dit certain bug viennent du fait qu'en fonction de si ces un serveur Windows ou unix avec wamp ou apache de petite problème peuvent survenir comme par exemple le retour à la ligne, sous unix avec apache ces "\n" , sous Windows ces "\r\n" , les droits en écriture sur le fichier ip.html peuve aussi être différent mais cela je n'en peu rien, après tout nous somme sur ce forum pour nous entraidés à développer des scripts, il y a plus d'idée dans plusieurs têtes que dans une et je ne suis pas encore voyant ou omniscient

Commentaire de michael33512 le 20/01/2013 00:23:37

mon code d'origine est a jour, je l'aie fait a chaque fois et il fonctionne parfaitement, mais n'oublié pas un serveur unix avec apache et un serveur Windows avec wamp ne fontionne pas de la meme façon comme le retour à la ligne \n sous unix \r\n sous windows

Commentaire de jadu le 20/01/2013 14:36:50

OK OK ne te fâches pas !
C'est bien de partager !
merci !
Je vais m'y remettre, j'avais dû m'absenter !

Commentaire de michael33512 le 20/01/2013 15:08:40

jadu je ne me fache pas, j'explique juste les raisons de certain bug qui peuvent se manifester et qui ne nécessite qu'un légère adaptation en fonction du serveur

Commentaire de stay le 22/01/2013 10:29:52

Salut, le code semble intéressant. Pourrais-tu commenter le code STP :) ?

Commentaire de michael33512 le 22/01/2013 17:15:28

stay je le ferais et le mettrais a jours ou te l'enverrais

Commentaire de michael33512 le 22/01/2013 22:06:19

le fichier csv à été compressé deux fois pour arriver à etre placer sur le forum, premiere compression en format zip, deuxième compression en format 7z, le fichier est celui de maxmin et me donne de très bon résultat

Commentaire de michael33512 le 25/01/2013 16:00:20

grace a ce script je fournis déjà une liste d'adresse ip blacklisté, celleà deux groupe de chiffres sont les plages ip chinoise qui scanne des infos privée mail et autre, les ip complète sont blacklistée, je les aies controlées sur le site dnslockup.fr, pour votre sécurité protéger vous en les mettant soit dans le htaccess comme ou en php si vous n'avez pas accès au htaccess, voici la liste.

<Limit GET POST HEAD>
Order Allow,Deny    
Allow from all
deny from 89.149.223.180
deny from 78.159.112.128
deny from 178.33.142.48
deny from 62.195.43.27
deny from 89.248.165.143
deny from 178.162.191.58
deny from 87.67.28.90
deny from 37.117.42.199
deny from 178.238.235.184
deny from 81.169.144.135
deny from 82.233.4.140
deny from 109.111.145.224
deny from 80.80.154.70
deny from 79.86.116.24
deny from 109.130.67.230
deny from 173.45.73.18
deny from 82.228.72.12
deny from 213.213.201.137
deny from 92.105.149.237
deny from 105.146.12.180
deny from 221.204.
deny from 201.141.
deny from 46.119.
deny from 61.158.
deny from 120.43.
deny from 183.13.
deny from 183.16.
deny from 180.153.
deny from 121.205.
deny from 219.142.
deny from 41.222.
deny from 175.44.
deny from 183.60.
deny from 27.40.
deny from 1.202.
deny from 198.73.
deny from 182.209.
deny from 110.83.
deny from 110.84.
deny from 110.87.
deny from 110.88.
deny from 110.82.
deny from 110.89.
deny from 114.89.
deny from 59.56.
deny from 124.42.
deny from 113.103.
deny from 220.161.
deny from 220.181.
deny from 120.32.
deny from 120.40.
deny from 120.128.
deny from 110.85.
deny from 110.86.
deny from 219.132.
deny from 117.29.
deny from 218.93.
deny from 27.156.
deny from 27.151.
deny from 110.90.
deny from 112.95.
deny from 27.155.
deny from 222.124.
deny from 222.79.
deny from 117.79.
deny from 94.102.52.
deny from 123.125.
</Limit>

Commentaire de michael33512 le 31/01/2013 17:02:53

nouvelle liste d'adresse ip dangereuse à utiliser sans modération pour protéger votre site avec un htaccess ou du php si pas accès au htaccess, les plages à deux groupes de chiffres sont des adresse asiatique, les ip complètes sont issus d'autre pays et sont blacklisté dans différentes base de données

<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from 89.149.223.180
Deny from 78.159.112.128
Deny from 62.195.43.27
Deny from 89.248.165.143
Deny from 87.67.28.90
Deny from 37.117.42.199
Deny from 81.169.144.135
Deny from 82.233.4.140
Deny from 109.111.145.224
Deny from 80.80.154.70
Deny from 79.86.116.24
Deny from 109.130.67.230
Deny from 173.45.73.18
Deny from 82.228.72.12
Deny from 213.213.201.137
Deny from 92.105.149.237
Deny from 105.146.12.180
Deny from 87.66.170.167
Deny from 190.46.146.168
Deny from 89.98.3.148
Deny from 197.15.11.168
Deny from 197.28.41.59
Deny from 41.107.96.200
Deny from 88.219.196.100
Deny from 216.99.152.114
Deny from 93.33.236.40
Deny from 186.1.206.82
Deny from 87.20.11.201
Deny from 109.130.70.73
Deny from 67.68.89.238
Deny from 149.229.94.13
Deny from 80.255.61.162
Deny from 78.250.215.72
Deny from 82.254.161.206
Deny from 1.2.
Deny from 119.147.
Deny from 46.109.
Deny from 114.158.
Deny from 120.36.
Deny from 58.251.
Deny from 186.9.
Deny from 61.154.
Deny from 176.195.
Deny from 14.145.
Deny from 218.8.
Deny from 142.0.
Deny from 46.73.
Deny from 95.220.
Deny from 220.169.
Deny from 27.159.
Deny from 94.153.
Deny from 117.76.
Deny from 218.213.
Deny from 183.15.
Deny from 221.204.
Deny from 201.141.
Deny from 46.119.
Deny from 61.158.
Deny from 120.43.
Deny from 183.13.
Deny from 183.16.
Deny from 180.153.
Deny from 121.205.
Deny from 219.142.
Deny from 41.222.
Deny from 175.44.
Deny from 183.60.
Deny from 27.40.
Deny from 1.202.
Deny from 198.73.
Deny from 182.209.
Deny from 110.83.
Deny from 110.84.
Deny from 110.87.
Deny from 110.88.
Deny from 110.82.
Deny from 110.89.
Deny from 114.89.
Deny from 59.56.
Deny from 124.42.
Deny from 113.103.
Deny from 220.161.
Deny from 220.181.
Deny from 120.32.
Deny from 120.40.
Deny from 120.128.
Deny from 110.85.
Deny from 110.86.
Deny from 219.132.
Deny from 117.29.
Deny from 218.93.
Deny from 27.156.
Deny from 27.151.
Deny from 110.90.
Deny from 112.95.
Deny from 27.155.
Deny from 222.124.
Deny from 222.79.
Deny from 117.79.
Deny from 94.102.52.
Deny from 110.84.
Deny from 110.83.
Deny from 110.87.
Deny from 120.32.
Deny from 123.125.
Deny from 89.107.
</Limit>

Commentaire de michael33512 le 23/03/2013 18:57:30

en complément du script, vu le nombre d'ip à bannir, pour éviter de surcharger le htaccess, voici un simple script de redirection en fonction du pays, les internautes des pays bannis seront dans ce cas ci rediriger vers un site de leurs propre pays, libre à vous de les rediriger ou vous le voulez


$pays_bannis_1 = 'Chine';
$pays_bannis_2 = 'Japon';
$pays_bannis_3 = 'Corée du nord';
$pays_bannis_4 = 'Taiwan';
$pays_bannis_5 = 'Hong Kong';
$pays_bannis_6 = 'Ukraine';
$pays_bannis_7 = 'Benin';
$pays_bannis_8 = 'Cote D\'Ivoir';
$pays_bannis_9 = 'Russie';

if ($pays == $pays_bannis_1)
{
header ('location: http://www.cntv.cn/');
exit;
}
elseif ($pays == $pays_bannis_2)
{
header ('location: http://www.nhk.or.jp/');
exit;
}
elseif ($pays == $pays_bannis_3)
{
header ('location: http://www.kctvjeju.com/index_intro.asp');
exit;
}
elseif ($pays == $pays_bannis_4)
{
header ('location: http://www.cts.com.tw/');
exit;
}
elseif ($pays == $pays_bannis_5)
{
header ('location: http://rthk.hk/');
exit;
}
elseif ($pays == $pays_bannis_6)
{
header ('location: http://www.ukraine.com/tv/');
exit;
}
elseif ($pays == $pays_bannis_7)
{
header ('location: http://www.ortb.info/');
exit;
}
elseif ($pays == $pays_bannis_8)
{
header ('location: http://www.abidjantv.net/');
exit;
}
elseif ($pays == $pays_bannis_9)
{
header ('location: http://www.1tv.ru/');
exit;
}

Commentaire de jadu le 23/03/2013 20:33:56

Bon, ben j'ai tout laissé tomber. En fin de compte je m'en passe très bien !

bon courage pour commenter !!!

;D

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales