Enregistrer l'IP des visiteurs de son site

Signaler
Messages postés
4
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
11 octobre 2009
-
Messages postés
4
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
11 octobre 2009
-
Bonjour à tous,

J'ai créé un site sur ma copropriété avec une zone réservée aux copropriétaires pour y accéder pour ceux qui le souhaitent chacun a un login et mot de passe personnel. Dans cette zone il y a un espace commentaire et il est arrivé d'y avoir des propos inconvenants. Je voulais donc un code pour enregistrer les ip des visiteurs. Comme cela lorsqu'on me demande un mot de passe par la page contact je note l'ip et en cas de message inconvenant je note l'ip du visiteur par un code je lui interdit l'accès à la page en supprimant son mot de passe.

Pour l'instant j'ai trouvé un code pour l'enregistrement par mail de l'ip des visiteurs que j'ai trouvé ici sur phpcs.com


J'ai mis le code source à la racine de mon site dans un fichier log_ip.php, et j'ai ajouté "l'include" dans la page que je veux surveiller et j'ai mis mon adresse email dans le $email= ??.@...fr ? . J'ai également créé un fichier texte vide log_ip.txt

J'ai testé pour voir si mon IP allait m'être envoyée. Mais sans résultat. Pourrais je avoir une aide, sur la marche à suivre afin que cela fonctionne ?

Voici le code source récupéré sur le site


1. // Fichier log_ip.php
2.
3.
4. <?php
5.
6. /************************************/
7.
8. /* ESPION de visite
9.
10. /* Version : 1.3 | 06/01/2002
11.
12. /* http://www.blinckers-groups.com
13.
14. /************************************/
15.
16. /* Source :
17.
18. /* http://www.sivit.fr
19.
20. /* http://www.2037.biz
21.
22. /************************************/
23.
24. // Nom du fichier des logs
25.
26. $fichier="log_ip.txt";
27.
28. $fp=fopen("$fichier","a");
29.
30.
31. // Donne la date et l'heure française
32.
33. $Jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
34.
35. $Mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
36.
37. $date = $Jour[date("w")]." ".date("d")." ".$Mois[date("n")]." ".date("Y");
38.
39. $heure = gmdate("H \h i", mktime(date("H")+1,date("i")));
40.
41.
42. $fsz=filesize("$fichier");
43.
44.
45. // Récupère l'IP et le FAI du visiteur (même si proxy)
46.
47. $ip_visiteur = (getenv("HTTP_X_FORWARDED_FOR") ? getenv("HTTP_X_FORWARDED_FOR") : getenv("REMOTE_ADDR"));
48.
49. $fai_visiteur = gethostbyaddr("$REMOTE_ADDR");
50.
51.
52. fseek($fp,$fsz);
53.
54.
55. // Enregistre les données
56.
57. fputs($fp,"$ip_visiteur | FAI du visiteur : $fai_visiteur | le $date à $heure\n");
58.
59. fclose($fp);
60.
61.
62. // Infos perso
63.
64. $email="webmaster@mon_site.com";
65.
66. $titre="Vient de mon site | Nouveau visiteur | Info";
67.
68. $messag="Un visiteur vient de passer sur votre site.
69.
70. Voici les infos le concernant :
71.
72.
73.
74. - Adresse IP du visiyeur : $ip_visiteur
75.
76. - FAI du visiteur : $fai_visiteur
77.
78. - le $date à $heure
79.
80.
81.
82. Espion interne.";
83.
84.
85. // envoi un mail
86.
87. // pour désactiver, (spam si plus de 50 visites) ajouter
88.
89. // deux slash devant la fonction mail() --> "//"
90.
91. mail($email,$titre,$messag);
92.
93. ?>
94.
95.
96.
97. ////////////////////
98.
99.
100. pour utiliser le script, insérer simplement la ligne suivante dans la page que vous souhaitez surveiller.
101.
102.
103. <?
104.
105. include ("log_ip.php");
106.
107. ?>

8 réponses

Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Même si l'idée est cohérente, enregistrer l'IP implique que celle ci ne change pas. Or, c'est dépendant du FAI, ou un malin peut passer par un proxy.
S.
Messages postés
4
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
11 octobre 2009

La copropriété de 300 apparts existe depuis 35 ans, la moyenne d'age plutot élevée, quoiqu'elle a tendance à se rajeunir, mais dans la majorité des cas la ruse n'est pas d'actualité, mais les mauvais coucheurs oui.
Sur ma page d'acceuil j'ai mis un script pour afficher l'IP de celui qui est sur le site et après enquête sur une dizaine de personne, toutes m'ont dit que leur adresse IP est toujours identique malgré qu'il y ait 3 FAI free, neuf et orange.
j'ai su qui était la personne malveillante, elle avait eu le mot de passe par les voisins, je les ai un peu sermoné , supprimé leur ancien mot de passe et donné un nouveau. Ca a l'air de ne plus se reproduire, mais j'aimerai quand même prendre mes précautions, d'ou l'objet de ce code que je n'ai toujours pas réussi à faire fonctionné, je ne comprend pas pourquoi je n'ai pas le retour par mail après avoir visiter le site
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Salut,

Pour qu'un mail arrive il faut OBLIGATOIREMENT qu'il y ai un entête FROM (comme spécifié dans la RFC 2822). Or, dans ton script, il n'y en a pas.
C'est pourtant spécifié dans la doc PHP : http://php.net/mail
Note: When sending mail, the mail must contain a From header.

Faute de quoi, le mail peut ne pas arriver (bloqué par un serveur entre ton serveur web et ton serveur mail, ou rangé dans le spam, ou...).

Il faut utiliser l'argument (optionnel...) additional_headers :
$headers = "From: My Server <my.server@domain.tld>\r\n";
mail($email,$titre,$messag, $headers);

Si tu veux que ton message ne fasse pas une seule ligne, n'hésite pas à rajouter des \n à la fin de chaque ligne, sinon PHP ne les ajoutera pas tout seul.

Bon, c'est peut-être pas la solution à ton problème, mais c'est le premier truc que je vois qui colle pas... J'ai pas creusé davantage ton code pour voir si ça vient uniquement de là ou pas.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
Salut,

il faut OBLIGATOIREMENT qu'il y ai un entête FROM [...] Or, dans ton script, il n'y en a pas.

Il me semble que si le from est renseigné dans le php.ini il n'y a pas besoin de le spécifier dans la fonction mail (PHP s'en charge).
Non ?

Cordialement,


Kohntark -
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Bonjour à tous,
Juste envie de déposer un message sur cette problématique. Donc rien de ce que je vais vous dire ne vous servira.. LOL !!
Perso j'utilise PHPMailer et il me génére bien une erreur au cas ou le From n'est pas renseigné.
C'est pas la RFC 2821 ?? Vieux souvenir de mon passage dans le monde de l'audit d'application.. LOL !!
Bonne journée
S.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
Salut Syndrael,

Je viens de faire un rapide test pour éviter de dire trop de bêtise :
Aucun pb (avec mail()) lorsque le php.ini est correctement renseigné, PHP ajoute les headers nécessaires. Si il ne l'est pas la fonction mail renvoie une erreur (testé sous Vista64/PHP 5.3 et OVH Linux/PHP 5.2)

@jeanclod13
Je n'ai parcouru que très brièvement le code.
Les enregistrements dans le fichier log_ip.txt sont ils corrects ?
L'affichage des erreurs est il activé ?
Ajoute ces lignes en tout début de fichier et dis nous ce qu'il en est :
error_reporting(-1);
ini_set('display_errors', 1);

Indique également ce que dit :
phpinfo();


Cordialement,


Kohntark -
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Salut,

Ouais, j'avais zappé que PHP se débrouillait avec le php.ini... En même temps, je ne faisais que chercher une explication possible...

Sinon, la RFC 2821, c'est SMTP (je disais pas que c'était la 2822 au hasard, c'est indiqué dans la doc de PHP, et je l'avais sous les yeux au moment de la rédaction du message).

Euh voilà, j'apporte rien de constructif... :)

--
Neige

N'hésitez pas à lire la doc
Messages postés
4
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
11 octobre 2009

Bonjour à tous

Kohntark

Je n'ai aucun enregistrement dans le fichier log_ip.txt, il est vierge
J'ai incorporé les 2 lignes dans le haut du fichier mais le résultat est toujours le même rien ne s'affiche dans le fichier texte et je ne reçois rien par mail

La seule chose qui m'intéresse c'est le retour par mail chaque fois qu'il y a un connecté

Ce code je l'ai récupéré ici http://www.phpcs.com/codes/ENREGISTREUR-IP-PLUS-AVERTISSEUR_13100.aspx