fonction php pour capter l'ip [src]
9 messages
• Page 1 sur 1
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
fonction php pour capter l'ip [src]
bon
dans la suite de ma release, j'ai optimisé mon traceur d'ip
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

- Messages: 18812
- Inscription: 8 Aoû 2004
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.
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 passionné

- Messages: 1662
- Inscription: 21 Sep 2006
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
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 passionné

- Messages: 1662
- Inscription: 21 Sep 2006
release
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)
j'ai l'impression que ça n'interesse personne
rog
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
rog
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
bah non
mon acienne detection capturait
HTTP_X_FORWARDED_FOR
HTTP_CLIENT_IP
REMOTE_ADDR
et je retrouvais des logs comme ça
y en avait même qui avait les trois variables renseignées, maintenant je log systematiquement les quatres, quelles soient vides ou non
rog
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
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Gérer l'entête HTTP en PHP - 04-08-2008
- Référencer un site multilingue - 24-04-2004
- Le PHP et le référencement - 28-07-2003
- Les sites les plus visibles pour le mot Google - 27-11-2002
- Google ajoute la Navigation par nom dans sa Toolbar - 15-07-2004
Consultez la description détaillée des produits ou services de Google suivants : Google Related Links
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

