Enregistrer l'IP des visiteurs de son site

cs_jeanclod13 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009 - 7 oct. 2009 à 15:03
cs_jeanclod13 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009 - 11 oct. 2009 à 20:20
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

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
7 oct. 2009 à 15:34
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.
0
cs_jeanclod13 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009
7 oct. 2009 à 17:19
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
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 oct. 2009 à 10:55
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.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 oct. 2009 à 09:30
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 -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
11 oct. 2009 à 11:11
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.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 oct. 2009 à 11:54
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 -
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
11 oct. 2009 à 12:10
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
0
cs_jeanclod13 Messages postés 4 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 11 octobre 2009
11 oct. 2009 à 20:20
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
0
Rejoignez-nous