/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Verificering af mail adresser
Fra : Lars Christiansen


Dato : 03-02-03 17:07

Hejsa !
Jeg har lavet en form på en PHP side, hvor man kan sende en mail. Man
skal desuden og så skrive sit navn og sin email adresse.

Jeg vil så gerne have en funktion som kan tjekke om mail adressen er
valid. hvordan gøres dette ?

På forhånd tak
Lars Christiansen



 
 
Larz (03-02-2003)
Kommentar
Fra : Larz


Dato : 03-02-03 17:20

"Lars Christiansen" <lc@REMOVElcnet.dk> wrote in news:3e3e939b$0$11057
$edfadb0f@dread12.news.tele.dk:
> Jeg vil så gerne have en funktion som kan tjekke om mail adressen er
> valid. hvordan gøres dette ?

function isValidEmail($address)
{
$address = trim($address);
if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
'@' . // 'at'
'([-0-9A-Z]+\.)+' . // domain name(s)
'([0-9A-Z]){2,6}\.?$/i', // tld
$address))
return false;
list(,$host) = split('@',$address);
$host .= '.'; // DNS style address
return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
}

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.

Lars Christiansen (03-02-2003)
Kommentar
Fra : Lars Christiansen


Dato : 03-02-03 17:47

mange tak for det !!


"Larz" <lp@your-pants-coder.dk> skrev i en meddelelse
news:Xns9317B05EE4A54godlarz@62.243.74.162...
> "Lars Christiansen" <lc@REMOVElcnet.dk> wrote in news:3e3e939b$0$11057
> $edfadb0f@dread12.news.tele.dk:
> > Jeg vil så gerne have en funktion som kan tjekke om mail adressen er
> > valid. hvordan gøres dette ?
>
> function isValidEmail($address)
> {
> $address = trim($address);
> if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
> '@' . // 'at'
> '([-0-9A-Z]+\.)+' . // domain
name(s)
> '([0-9A-Z]){2,6}\.?$/i', // tld
> $address))
> return false;
> list(,$host) = split('@',$address);
> $host .= '.'; // DNS style address
> return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
> }
>
> --
> -
> Lars
> http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
> To mail me remove your pants.



Asbjørn Sloth Tønnes~ (03-02-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 03-02-03 22:39

"Larz" <lp@your-pants-coder.dk> skrev i en meddelelse
news:Xns9317B05EE4A54godlarz@62.243.74.162...
> "Lars Christiansen" <lc@REMOVElcnet.dk> wrote in news:3e3e939b$0$11057
> $edfadb0f@dread12.news.tele.dk:
> > Jeg vil så gerne have en funktion som kan tjekke om mail adressen er
> > valid. hvordan gøres dette ?
>
> function isValidEmail($address)
> {
> $address = trim($address);
> if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
> '@' . // 'at'
> '([-0-9A-Z]+\.)+' . // domain
name(s)
> '([0-9A-Z]){2,6}\.?$/i', // tld
> $address))
> return false;
> list(,$host) = split('@',$address);
> $host .= '.'; // DNS style address
> return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
> }

Hvad nu hvis $host er en ip?



Larz (04-02-2003)
Kommentar
Fra : Larz


Dato : 04-02-03 10:30

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in news:8kB%
9.52274$Hl6.6643654@news010.worldonline.dk:
> Hvad nu hvis $host er en ip?

Ja, du har en pointe der, selvom det ikke er mange der bruger IP i mail
adresser, men patchen er jo rimelig simpel:

function isValidEmail($address)
{
   $address = trim($address);
   if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
       '@' . // 'at'
       '([-0-9A-Z]+\.)+' . // domain name(s)
       '([0-9A-Z]){1,6}\.?$/i', // tld
       $address))
   {
      return false;
   }
   list(,$host) = split('@',$address);
   $ip = explode('.',$host);
   $is_ip = 1;
   foreach ($ip as $byte)
   {
      if (!is_numeric($byte))
      {
         $is_ip = 0;
         break;
      }
   }
   if ($is_ip)
   {
      return 1;
   }
   $host .= '.'; // DNS style address
   return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
}

Hvis folk så gerne vil skrive en forkert IP, eller en ikke gyldig IP, så
må de sq gerne det ;)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.

Peter Brodersen (04-02-2003)
Kommentar
Fra : Peter Brodersen


Dato : 04-02-03 11:22

On 04 Feb 2003 09:29:53 GMT, Larz <lp@your-pants-coder.dk> wrote:

>Ja, du har en pointe der, selvom det ikke er mange der bruger IP i mail
>adresser, men patchen er jo rimelig simpel:

Det vil dog stadigvæk ikke være helt godt nok. IP-adresserne skal
efter @ indkapsles i [], fx:

brugernavn@[10.20.30.40]

Det regulære udtryk tager ikke højde for dette - og i dette tilfælde
skal IP-adressen så selvfølgelig hives ud af [].

Jeg vil dog for det første anbefale at kigge på diverse færdige
PHP-klasser - omend jeg ikke ved om de tager højde for det - og
sekundært høre hvad formålet er. Folks behov for at validere
e-mail-adresser favner bredt.

--
- Peter Brodersen

Larz (04-02-2003)
Kommentar
Fra : Larz


Dato : 04-02-03 12:53

Peter Brodersen <usenet@ter.dk> wrote in news:b1o4ae$lhu$1
@dknews.tiscali.dk:
> Det vil dog stadigvæk ikke være helt godt nok. IP-adresserne skal
> efter @ indkapsles i [], fx:

Ooops! Det har du da helt ret i! Sådan burde den have set ud:

function isValidEmail($address)
{
   $address = trim($address);
   list(,$host) = split('@',$address);
   if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
       '@' . // 'at'
       '([-0-9A-Z]+\.)+' . // domain name(s)
       '([0-9A-Z]){1,6}\.?$/i', // tld
       $address))
   {
      if (preg_match('/^\[(.*)\]$/',$host,$regs))
      {
         $ip = explode('.',$regs[1]);
         $is_ip = 1;
         foreach ($ip as $byte)
         {
            if (!is_numeric($byte))
            {
               $is_ip = 0;
               break;
            }
         }
         if ($is_ip)
         {
            return true;
         }
      }
      return false;
   }
   $host .= '.'; // DNS style address
   return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
}


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.

Jacob Atzen (03-02-2003)
Kommentar
Fra : Jacob Atzen


Dato : 03-02-03 17:21

"Lars Christiansen" <lc@REMOVElcnet.dk> writes:

> Jeg vil så gerne have en funktion som kan tjekke om mail adressen er
> valid. hvordan gøres dette ?

Du kan verificere, at adressen er en gyldig adresse ved at lave et
regulært udtryk og teste den mod. Kig på preg og ereg funktionerne.

Du kan dog ikke teste om adressen rent faktisk eksisterer, altså om
der findes en konto på den mailserver du prøver at sende til. Ikke
uden at sende en mail til kontoen i alt fald.

--
Med venlig hilsen
- Jacob Atzen

Asbjørn Sloth Tønnes~ (03-02-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 03-02-03 22:37

"Jacob Atzen" <jacob@aub.dk> skrev i en meddelelse
news:87heblgwtk.fsf@morpheus.aub.dk...
> "Lars Christiansen" <lc@REMOVElcnet.dk> writes:
>
> > Jeg vil så gerne have en funktion som kan tjekke om mail adressen er
> > valid. hvordan gøres dette ?
>
> Du kan verificere, at adressen er en gyldig adresse ved at lave et
> regulært udtryk og teste den mod. Kig på preg og ereg funktionerne.
>
> Du kan dog ikke teste om adressen rent faktisk eksisterer, altså om
> der findes en konto på den mailserver du prøver at sende til. Ikke
> uden at sende en mail til kontoen i alt fald.

Forkert, når min computer er tændt (11:20-12 & 14-22/23)
http://asbjorn.phps.dk/public/mailcheck/ (ikke færdigt script til SMTP check
af en mail adresse)

Asbjørn



Larz (04-02-2003)
Kommentar
Fra : Larz


Dato : 04-02-03 10:04

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in
news:ChB%9.52269$Hl6.6643520@news010.worldonline.dk:
>> Du kan verificere, at adressen er en gyldig adresse ved at lave et
>> regulært udtryk og teste den mod. Kig på preg og ereg funktionerne.
>>
>> Du kan dog ikke teste om adressen rent faktisk eksisterer, altså om
>> der findes en konto på den mailserver du prøver at sende til. Ikke
>> uden at sende en mail til kontoen i alt fald.
>
> Forkert, når min computer er tændt (11:20-12 & 14-22/23)
> http://asbjorn.phps.dk/public/mailcheck/ (ikke færdigt script til SMTP
> check af en mail adresse)

Når en SMTP server er sat op så man kan checke om en adresse er gyldig
(VRFY), plejer man at sige at den er sat forkert op :P Det er et
"sikkerhedshul" - Man bør dog ikke afvise VRFY queries, men svare med 252
sammen med noget tekst, i stedet for 250...

I.e.

VRFY asbjorn
250 asbjorn@example.com

Er den usikre, og den sikre kunne være:

VRFY asbjorn
252 Well, maybe, try sending some mail!

Der står vist noget om det på qmail forfatterens hjemmeside:
http://cr.yp.to/

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.

Asbjørn Sloth Tønnes~ (04-02-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 04-02-03 11:48

"Larz" <lp@your-pants-coder.dk> skrev i en meddelelse
news:Xns9318665F67C70godlarz@62.243.74.162...
> "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in
> news:ChB%9.52269$Hl6.6643520@news010.worldonline.dk:
> >> Du kan verificere, at adressen er en gyldig adresse ved at lave et
> >> regulært udtryk og teste den mod. Kig på preg og ereg funktionerne.
> >>
> >> Du kan dog ikke teste om adressen rent faktisk eksisterer, altså om
> >> der findes en konto på den mailserver du prøver at sende til. Ikke
> >> uden at sende en mail til kontoen i alt fald.
> >
> > Forkert, når min computer er tændt (11:20-12 & 14-22/23)
> > http://asbjorn.phps.dk/public/mailcheck/ (ikke færdigt script til SMTP
> > check af en mail adresse)
>
> Når en SMTP server er sat op så man kan checke om en adresse er gyldig
> (VRFY), plejer man at sige at den er sat forkert op :P Det er et
> "sikkerhedshul" - Man bør dog ikke afvise VRFY queries, men svare med 252
> sammen med noget tekst, i stedet for 250...
>
> I.e.
>
> VRFY asbjorn
> 250 asbjorn@example.com
>
> Er den usikre, og den sikre kunne være:
>
> VRFY asbjorn
> 252 Well, maybe, try sending some mail!

Jeg prøver at sende en mail til adressen, hvilket jeg aldrig har haft
problemmer med.
Du må meget gerne sende mig en mailadresse hvor det ikke virker

I dette eksempel returner serveren
250 2.1.5 <asbjorn@phps.dk>... User unknown
fordi at jeg har stjernealias på phps.dk

:: Mail address
Local part : asbjorn
Domain : phps.dk
Extra text :
Mailaddress : asbjorn@phps.dk

:: DNS Check
10 - post2.yanet.dk [80.163.139.60]

:: SMTP Check
[Contacting post2.yanet.dk [80.163.139.60]...]
[Connected]
220 post2.yanet.dk ESMTP Merak 5.5.7; Tue, 04 Feb 2003 11:39:59 +0100
HELO asbjorn.phps.dk
250 post2.yanet.dk Hello asbjorn.phps.dk [213.237.45.137], pleased to
meet you.
MAIL FROM:<ValidMailAddressChecker@phps.dk>
250 2.1.0 <ValidMailAddressChecker@phps.dk>... Sender ok
RCPT TO:<asbjorn@phps.dk>
250 2.1.5 <asbjorn@phps.dk>... User unknown
QUIT
221 2.0.0 post2.yanet.dk closing connection
[Connection closed]

250 - Requested mail action okay, completed

0.5417sec.



Larz (04-02-2003)
Kommentar
Fra : Larz


Dato : 04-02-03 12:40

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in
news:eTM%9.52433$Hl6.6693335@news010.worldonline.dk:

<SNIP/>

> Jeg prøver at sende en mail til adressen, hvilket jeg aldrig har haft
> problemmer med.
> Du må meget gerne sende mig en mailadresse hvor det ikke virker

<SNIP/>

Ok, men det er jo fint! :) Jeg troede måske bare at du brugte VRFY! :)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.

Henrik Stidsen (04-02-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 04-02-03 18:32

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in
news:eTM%9.52433$Hl6.6693335@news010.worldonline.dk

> Jeg prøver at sende en mail til adressen, hvilket jeg aldrig har
> haft problemmer med.

Jeg tror du skal overveje at tage højde for de servere hvor ugyldige
adresser *ikke* afvises i SMTP dialogen (ja, de findes i stor stil).

:: SMTP Check
[Contacting dnsmail1.ft.dk [194.255.119.5]...]
[Connected]
220 dnsmail1.ft.dk ESMTP Sendmail 8.11.6/8.11.6; Tue, 4 Feb 2003
18:19:36 -0100
HELO asbjorn.phps.dk
250 dnsmail1.ft.dk Hello 213.237.45.137.adsl.brh.worldonline.dk
[213.237.45.137], pleased to meet you
MAIL FROM:<ValidMailAddressChecker@phps.dk>
250 2.1.0 <ValidMailAddressChecker@phps.dk>... Sender ok
RCPT TO:<glkhfdghdsflkj@ft.dk>
250 2.1.5 <glkhfdghdsflkj@ft.dk>... Recipient ok
QUIT
221 2.0.0 dnsmail1.ft.dk closing connection
[Connection closed]

> Du må meget gerne sende mig en mailadresse hvor det ikke virker

Hermed gjort - se ovenfor - og ja, jeg har prøvet med en anden ligeså
usandsynlig adresse (så jeg ikke bare var heldig at møde en sygt
opsat mailadresse :)

--
..: Henrik Stidsen - HS235.dk ::...
http://hs235.dk/cracks - http://susie.dk/
http://hs235.dk/billeder :=)

Asbjørn Sloth Tønnes~ (04-02-2003)
Kommentar
Fra : Asbjørn Sloth Tønnes~


Dato : 04-02-03 20:09

"Henrik Stidsen" <idontwantnospam@hs235.dk> skrev i en meddelelse
news:Xns9318BC584FA59HS235DK@130.225.247.90...
> "Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in
> news:eTM%9.52433$Hl6.6693335@news010.worldonline.dk
>
> > Jeg prøver at sende en mail til adressen, hvilket jeg aldrig har
> > haft problemmer med.
>
> Jeg tror du skal overveje at tage højde for de servere hvor ugyldige
> adresser *ikke* afvises i SMTP dialogen (ja, de findes i stor stil).
>
> :: SMTP Check
> [Contacting dnsmail1.ft.dk [194.255.119.5]...]
> [Connected]
> 220 dnsmail1.ft.dk ESMTP Sendmail 8.11.6/8.11.6; Tue, 4 Feb 2003
> 18:19:36 -0100
> HELO asbjorn.phps.dk
> 250 dnsmail1.ft.dk Hello 213.237.45.137.adsl.brh.worldonline.dk
> [213.237.45.137], pleased to meet you
> MAIL FROM:<ValidMailAddressChecker@phps.dk>
> 250 2.1.0 <ValidMailAddressChecker@phps.dk>... Sender ok
> RCPT TO:<glkhfdghdsflkj@ft.dk>
> 250 2.1.5 <glkhfdghdsflkj@ft.dk>... Recipient ok
> QUIT
> 221 2.0.0 dnsmail1.ft.dk closing connection
> [Connection closed]
>
> > Du må meget gerne sende mig en mailadresse hvor det ikke virker
>
> Hermed gjort - se ovenfor - og ja, jeg har prøvet med en anden ligeså
> usandsynlig adresse (så jeg ikke bare var heldig at møde en sygt
> opsat mailadresse :)

Det er det der hedder stjernealias (*@host)

Hvis glkhfdghdsflkj@ft.dk ikke findes sendes meddelelser til
glkhfdghdsflkj@ft.dk til f.eks. admin@ft.dk (hvis denne er sat til at
modtage meddelelser til ikke eksisterede konti)

Derfor skal glkhfdghdsflkj@ft.dk returnere 250 hvis der er stjernealias på
den pågældende host, men hvis admin@ft.dk er overfyldt skal den returnere
552

SMTP reply codes
http://www.supermailer.de/smtp_reply_codes.htm



Henrik Stidsen (04-02-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 04-02-03 22:36

"Asbjørn Sloth Tønnesen" <ONGLDSFPKWPX@spammotel.com> wrote in
news:1dU%9.52630$Hl6.6756348@news010.worldonline.dk

> Det er det der hedder stjernealias (*@host)

*@ft.dk - eksisterer ikke

> Hvis glkhfdghdsflkj@ft.dk ikke findes sendes meddelelser til
> glkhfdghdsflkj@ft.dk til f.eks. admin@ft.dk (hvis denne er sat
> til at modtage meddelelser til ikke eksisterede konti)
>
> Derfor skal glkhfdghdsflkj@ft.dk returnere 250 hvis der er
> stjernealias på den pågældende host, men hvis admin@ft.dk er
> overfyldt skal den returnere 552

Well, det sker ikke - ft.dk har ikke stjernealias og køres med en
SMTP der ikke afviser i SMTP dialogen. Det er formentlig fordi mailen
blot pipes videre til et internet program der fordeler eller
returnere en fejl.

For at bevise prøvede jeg at maile til ovennævnte adresse, resultatet
var som følger:

This is an automatically generated Delivery Status Notification.

Delivery to the following recipients failed.

glkhfdghdsflkj@mail.ft.dk


Content-Type: message/delivery-status


Reporting-MTA: dns;EXCON05.ft.dk
Received-From-MTA: dns;alphae.ft.dk
Arrival-Date: Tue, 4 Feb 2003 22:27:52 +0100

Original-Recipient: rfc822;glkhfdghdsflkj@ft.dk
Final-Recipient: rfc822;glkhfdghdsflkj@mail.ft.dk
Action: failed
Status: 5.1.1



Jeg mener det bl.a. er QMail der kan finde på at opføre sig som ft.dk
gør. Mailheaderne på returmailen afslører også at den har været vidt
omkring, tilsyneladene ikke en qmail:

Received: from alphae.ft.dk (alphae [147.29.233.6])by dnsmail1.ft.dk
(8.11.6/8.11.6) with ESMTP id h14NJf325193for
<slupperman@hotmail.com>; Tue, 4 Feb 2003 22:19:41 -0100

Received: from Outbound.ft.dk (excon05.ft.dk [172.16.100.27]) by
ftclu.folketinget.dk (PMDF V5.2-27 #40479) with ESMTP id
<01KS216T6OH49QVODC@ftclu.folketinget.dk> for slupperman@hotmail.com;
Tue, 4 Feb 2003 22:25:44 MET

Received: from EXCON05.ft.dk ([172.16.100.23]) by Outbound.ft.dk with
Microsoft SMTPSVC(5.0.2195.2966); Tue, 04 Feb 2003 22:27:52 +0100


Konklusion : uanset om der bør gives en 552 eller en 550 fordi
mailadressen ikke eksistere sker det ikke - og ft.dk er ikke ene om
den opførsel.

--
..: Henrik Stidsen - HS235.dk ::...
http://hs235.dk/cracks - http://susie.dk/
http://hs235.dk/billeder :=)

Henrik Stidsen (04-02-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 04-02-03 23:20

Henrik Stidsen <idontwantnospam@hs235.dk> wrote in
news:Xns9318E5E1BCC05HS235DK@130.225.247.90

> et internet program

Sku være "et internt program".

--
..: Henrik Stidsen - HS235.dk ::...
http://hs235.dk/cracks - http://susie.dk/
http://hs235.dk/billeder :=)

Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408658
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste