2010-12-11 23 views
1

OK Je ne suis pas super avec PHP mais j'apprends donc restez avec moi ici.Extraire l'adresse IP de l'en-tête en utilisant php

J'ai une adresse e-mail que tous les e-mails reçus sont redirigés vers un script php qui stocke ensuite le sujet de message d'en-têtes etc dans une base de données.

Cela fonctionne bien, mais ce que je dois faire est de rechercher l'en-tête de l'adresse IP du serveur de l'expéditeur, puis de le mettre dans une variable.

From [email protected] Sun Dec 12 02:37:01 2010 
Received: from mail-pz0-f52.google.com ([**209.85.210.52**]) 
     by some.server.com with esmtp (Exim 4.69) (envelope-from <[email protected]>) 
     id 1PRRVJ-00020U-1p for [email protected]; 
+0

passer à la question préalable [allez à ce document] (http://stackoverflow.com/questions/4417736/extract-ip-from-header-using-php) –

Répondre

0

Utilisez des expressions régulières.

à savoir

if (preg_match('/\(\[((\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3})\]\)/i', $string, $matches)) 
{ 
    print_r($matches); 
} 
  • Christian
+0

Merci pour votre aide, fait l'affaire. – Ryan

+0

Cette expression régulière ne fonctionnait pas avec certains en-têtes, par exemple: https://gist.github.com/daslicht/0c0e93fb82478a711cc1, Quels sont les expéditeurs ip: Received: from smtp65.yalanmail.com ([85.153.51.161])? Reçu: de localhost (5.10.69.141) par smtp.51.portakalmail.com. Celui-ci: smtp.51.portakalmail.com? – daslicht

1

Vous pouvez utiliser des expressions régulières pour analyser les en-têtes reçus. Vous voulez rechercher le premier un, qui sera le dernier un vers le bas à partir du haut. À moins que certains sont usurpés, ce qui est commun dans les spams.

+0

Quand quelqu'un vous envoie un mail, le serveur d'expéditeurs doit se connecter au vôtre, alors comment pouvons-nous connecter ces connexions? Ne pourrions-nous pas l'utiliser pour identifier l'expéditeur? – daslicht

+0

probablement besoin de configurer votre logiciel serveur SMTP pour faire une journalisation détaillée. désolé, vraiment occupé en ce moment et ne peut pas le rechercher. –