SAUVEGARDE ADRESSE IP VISITEUR

cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013 - 13 janv. 2013 à 10:23
janhsh Messages postés 6 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 21 février 2019 - 23 janv. 2015 à 01:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54882-sauvegarde-adresse-ip-visiteur

janhsh Messages postés 6 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 21 février 2019
23 janv. 2015 à 01:58
ce script utilise des fonctionnalités obsolètes
par exemple:
L'appel de la fonction date ("d-m-y") doit être obligatoirement être précédé d'un appel à date_default_timezone_set

On n'écrit jamais les variables en majuscule. Les majuscules sont réservées pour les constantes. c'est une règle de bonne pratique en php ou les variables systèmes

==> écrire global $REMOTE_ADDR; global $HTTP_X_FORWARDED_FOR
est une très mauvaise idée. ces variables peuvent exister en tant que variables systèmes en fonction de la config du serveur

|^([0-9]{1,3}\.){3,3}[0-9]{1,3}| ==> pourquoi créer une première parenthèse capturante pour ne finalement pas utilise la capture ?

$port_client = $_SERVER['REMOTE_PORT']; ne fonctionne pas si il y a un proxy
en fait cette fonction ne fait que retourner le port du proxy pas le port du client
le port du client est contenu dans HTTP_X_FORWARDED
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
23 mars 2013 à 20:33
Bon, ben j'ai tout laissé tomber. En fin de compte je m'en passe très bien !

bon courage pour commenter !!!

;D
michael33512
23 mars 2013 à 18:57
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;
}
michael33512
31 janv. 2013 à 17:02
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

*
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.
michael33512
25 janv. 2013 à 16:00
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.

*
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.
michael33512
22 janv. 2013 à 22:06
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
michael33512
22 janv. 2013 à 17:15
stay je le ferais et le mettrais a jours ou te l'enverrais
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
22 janv. 2013 à 10:29
Salut, le code semble intéressant. Pourrais-tu commenter le code STP :) ?
michael33512
20 janv. 2013 à 15:08
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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
20 janv. 2013 à 14:36
OK OK ne te fâches pas !
C'est bien de partager !
merci !
Je vais m'y remettre, j'avais dû m'absenter !
michael33512
20 janv. 2013 à 00:23
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
michael33512
17 janv. 2013 à 16:49
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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
17 janv. 2013 à 11:34
Il serait urgent que tu corriges le code d'origine, pour rester crédible !!! :)
michael33512
16 janv. 2013 à 23:42
l'interet de differencier les deux type d'adresse ces pour la géolocalisation
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
16 janv. 2013 à 23:13
À 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 !
michael33512
16 janv. 2013 à 22:53
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.'
'.

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";
michael33512
15 janv. 2013 à 16:39
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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
15 janv. 2013 à 11:29
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 !
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
15 janv. 2013 à 11:12
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 !
michael33512
14 janv. 2013 à 22:21
voici un site pour ceux qui veule détail et explication sur les users agents
http://danzcontrib2.free.fr/useragents.php
michael33512
14 janv. 2013 à 22:15
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
michael33512
14 janv. 2013 à 22:12
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
pitu69 Messages postés 4 Date d'inscription mercredi 15 septembre 2010 Statut Membre Dernière intervention 14 janvier 2013
14 janv. 2013 à 22:03
J'ai changer la ligne 97 par
$save = '
ip client : '.$ip_client.'
'.'fournisseur client : '.$fournisseur.'
'.'connection client : '.$connection.'
'.'protocol client : '.$protocol.'
'.'user-agent : '.$agent.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'
'.'';

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?
sazaju Messages postés 48 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 3 juin 2013
14 janv. 2013 à 21:46
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).
michael33512
14 janv. 2013 à 21:45
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
pitu69 Messages postés 4 Date d'inscription mercredi 15 septembre 2010 Statut Membre Dernière intervention 14 janvier 2013
14 janv. 2013 à 21:35
Salut,

Ce code m'interesse mais j'ai le même message d'erreur que jadu. J'ai le même fichier que lui
michael33512
14 janv. 2013 à 20:58
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
michael33512
14 janv. 2013 à 20:56
serais ce la methode global pour détecter l'ip qui poserait problème peut etre
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
14 janv. 2013 à 20:33
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 = '(
'ip client : '.$ip_client.'
'.'fournisseur client : '.$fournisseur.'
'.'connection client : '.$connection.'
'.'protocol client : '.$protocol.'
'.'user-agent : '.$agent.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'
'."\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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
14 janv. 2013 à 20:28
ok, j'approfondis et je relance !
michael33512
14 janv. 2013 à 20:22
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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
14 janv. 2013 à 19:12
et pour la ligne :
$save = '(
'ip client : '.$ip_client.'
'.'fournisseur client : '.$fournisseur.'
'.'connection client : '.$connection.'
'.'protocol client : '.$protocol.'
'.'user-agent : '.$agent.'<hr style="color:#ff0000;background-color:#ff0000;border-color:#ff0000;width:80%;size:2px">'.'
'."\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 ???
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
14 janv. 2013 à 18:50
Bon ok merci.
je vais voir ce que ça donne !
michael33512
14 janv. 2013 à 18:39
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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
14 janv. 2013 à 18:23
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 ?
michael33512
14 janv. 2013 à 17:19
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
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
14 janv. 2013 à 14:53
dès le début il y a :



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 !
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
13 janv. 2013 à 18:38
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...
michael33512
13 janv. 2013 à 15:36
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'];
?>
wanou95b Messages postés 23 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 5 juin 2009
13 janv. 2013 à 11:18
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.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
13 janv. 2013 à 10:23
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...
Rejoignez-nous