fonction php pour capter l'ip [src]

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

fonction php pour capter l'ip [src]

Message le Ven Oct 06, 2006 7:28

bon

dans la suite de ma release, j'ai optimisé mon traceur d'ip

Code: Tout sélectionner
####################################################################
function get_ip(){
# get_ip by roger girardin
################################################################
# if the environnement var HTTP_X_FORWARDED_FOR or HTTP_VIA
# then the client ip is HTTP_X_FORWARDED_FOR
#
#   proxy
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) || isset($_SERVER['HTTP_VIA']))
   {
   $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
   }
# if HTTP_CLIENT_IP is set then the client ip is HTTP_CLIENT_IP
   elseif(isset($_SERVER['HTTP_CLIENT_IP']))
      {
      $ip = $_SERVER['HTTP_CLIENT_IP'];
      }
      # else the client ip is REMOTE_ADDR
   elseif(isset($_SERVER['REMOTE_ADDR']))
      {
      $ip = $_SERVER['REMOTE_ADDR'];
      }
   else
      {
      $ip = "0.0.0.0";   # hidden
      }
$ip_num = 0;
#
if($array_ip = explode(".",$ip))
   {
   $count = count($array_ip);
   #
   for($i = 0; $i < $count; $i++)
      {
      settype($array_ip[$i],"integer");
      $exp = $count - $i -1;
      #
      $ip_num += $array_ip[$i]*pow(256,$exp);
      }
   }
return $ip_num;
}


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12382
Inscription: Dim Aoû 08, 2004 20:24

Message le Ven Oct 06, 2006 7:46

et si $_SERVER['HTTP_VIA'] est défini et pas $_SERVER['HTTP_X_FORWARDED_FOR'], ça va renvoyer une belle erreur.
Sinon, pour que le client reçoive le résultat de sa requête, il faut bien qu'il y ait une ip de définie, elle ne peut être hidden. Au pire, ça sera de l'ip spoofing.


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Oct 06, 2006 7:59

lol

c'est vrai que ma condition est glauque, une variable ne va pas sans l'autre, $ip sera toujours renseignée par l'adresse qui m'interesse le plus

dans l'autre version je loggai toutes les adresses, mais effectivement la je paux enlever le deuxième paramètre de ma condition

pour le hidden :

il y a des systemes de proxy qui renvoient unknow comme adresse ip, c'est pire que du spoof

rog


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

release

Message le Dim Oct 08, 2006 6:43

j'ai modifié ma strategie

comme je prends la langue par le navigateur, je n'ai pas besoin de matcher l'expression decimale de l'ip avec une table de correspondance

et vu d'un aspect sécuritaire, il est plus judicieux de logger toutes les adresses renvoyées par le client

la nouvelle fonction renvoie un tableau qui contient toutes les ip loggables

j'ai ajouté une fonction pour verifier si une chaine est bien une adresse ip (V4)

Code: Tout sélectionner
####################################################################
# changing the function to log every ip related var
####################################################################
function get_ip(){
#
$varname = array(0=>"HTTP_VIA","HTTP_X_FORWARDED_FOR","HTTP_CLIENT_IP","REMOTE_ADDR");
$ip = array();
#
for($i = 0; $i < count($varname); $i++)
   {
   if(isset($_SERVER["$varname[$i]"]))
      {
      if(verif_ip($_SERVER["$varname[$i]"]))
         {
         $ip[$i] = $_SERVER["$varname[$i]"];
         }
         else
            {
            $ip[$i] = htmlentities($_SERVER["$varname[$i]"]);
            }
      }
      else
         {
         $ip[$i] = NULL;
         }
   }
#
return $ip;
}
####################################################################
# checking valid ip
####################################################################
function verif_ip($ip){
#
$ip = trim($ip);
#
if($explode = explode(".",$ip))
   {
   $count = count($explode);
   #
   if($count == 4)
      {
      for($i = 0; $i < count($explode); $i++)
         {
         if($explode[$i] < 0 || $explode[$i] > 255)
            {
            return false;
            }
         }
      }
      else
         {
         return false;
         }
   }
   else
      {
      return false;
      }
return true;
}
####################################################################


j'ai l'impression que ça n'interesse personne
:D

rog

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Dim Oct 08, 2006 7:55

tu prends la dernier ip communiquée de ton array si elle est valide, c'est bien ça..
Dernière édition par thierry8 le Dim Oct 08, 2006 9:33, édité 1 fois.


e-kiwi
Modérateur
Modérateur
 
Messages: 13870
Inscription: Mar Déc 23, 2003 9:04

Message le Dim Oct 08, 2006 8:48

>> j'ai l'impression que ça n'interesse personne

en meme temps, on est pas dans un forum de depots de scripts de programmation, mais dans un forum dédié au referencement :) et avec tous les outils de stats qui existent déjà en plus ... ;)


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Dim Oct 08, 2006 9:46

c'est sur kiwi mais les scripts existants ne me conviennent pas

thierry

$ip est un array qui contient toutes les variables $_SERVER pour les index :

HTTP_VIA
HTTP_X_FORWARDED_FOR
HTTP_CLIENT_IP
REMOTE_ADDR

rog

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Dim Oct 08, 2006 10:22

ok mais laquel tu prends alors ?

une suffit ..


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Dim Oct 08, 2006 10:42

bah non

mon acienne detection capturait

HTTP_X_FORWARDED_FOR
HTTP_CLIENT_IP
REMOTE_ADDR

et je retrouvais des logs comme ça

224.11.42, 200.228.66.234
201.29.192.51, unknown
10.0.0.162, 10.129.50.82
10.0.0.162, 202.38.62.226
10.15.36.3, 10.15.30.248
201.4.69.134, 165.228.128.11, unknown


y en avait même qui avait les trois variables renseignées, maintenant je log systematiquement les quatres, quelles soient vides ou non

rog


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités