/ 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
Tjekke for ugyldig indtastet mailadresse
Fra : Anders Boholdt-Peter~


Dato : 04-09-07 15:36

Hej,

På webadressen
http://www.boholdt-petersen.dk/kontakt.txt
ligger der koden til en formular, som jeg bruger til at sende mails med via
min hjemmeside.

Kan man i denne formular et eller andet sted indsætte en variabel, der gør
at der bliver tjekket om folk har skrevet hele mailadressen?

Her tænker jeg på, hvis jeg i det felt hvor der skal indtastes mailadresse
blot eksempelvis indtaster mail@ditdomaene.d i stedet for mail@ditdomaene.dk
osv?

På forhånd mange tak for eventuelle svar.

--

/ Anders
http://www.boholdt-petersen.dk




 
 
Martin (04-09-2007)
Kommentar
Fra : Martin


Dato : 04-09-07 16:16

Anders Boholdt-Petersen wrote:
> Hej,
>
> På webadressen
> http://www.boholdt-petersen.dk/kontakt.txt
> ligger der koden til en formular, som jeg bruger til at sende mails med via
> min hjemmeside.
>
> Kan man i denne formular et eller andet sted indsætte en variabel, der gør
> at der bliver tjekket om folk har skrevet hele mailadressen?
>
> Her tænker jeg på, hvis jeg i det felt hvor der skal indtastes mailadresse
> blot eksempelvis indtaster mail@ditdomaene.d i stedet for mail@ditdomaene.dk
> osv?

Indsæt følgende


if(!preg_match('@^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*\@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$@',$_POST['email'])
{
$usermessage.="Du skal angive din mailadresse.\n";
}

istedet for

if (empty($_POST['email']) || strpos($_POST['email'],'@')===false){
$usermessage.="Du skal angive din mailadresse.\n";
}

Peter Brodersen (04-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 04-09-07 17:06

On Tue, 04 Sep 2007 17:16:09 +0200, Martin <maaNO@SPAMscandesigns.dk>
wrote:

>if(!preg_match('@^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*\@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$@',$_POST['email'])

Her kan man så ikke sende til adresser, der slutter på .asia, .cat,
..mobi eller .tel (både afilias-nst.asia, domini.cat, mtld.mobi og
nic.tel har mailudvekslere tilknyttet)

Det er måske ikke relevant nu, men ens kode skulle jo helst også gerne
virke om et års tid eller to, når der kommer endnu flere nye tld'er
til. Det vil være et ondt vedligeholdelsesarbejde, hvis man bare har
et par sites, der benytter sig af den kode.

Derudover tillader tjekket tilsyneladende heller ikke, at man skriver
sin adresse med stort begyndelsesbogstav.

Den slags tjek kan måske være fine for at gøre opmærksom på at
brugeren måske har lavet en tastefejl. Men de bør ikke være
"insisterende" på at brugeren har lavet en fejl.

--
- Peter Brodersen
Kendt fra Internet

Martin (06-09-2007)
Kommentar
Fra : Martin


Dato : 06-09-07 13:32

Peter Brodersen wrote:
> On Tue, 04 Sep 2007 17:16:09 +0200, Martin <maaNO@SPAMscandesigns.dk>
> wrote:
>
>> if(!preg_match('@^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*\@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$@',$_POST['email'])
>
> Her kan man så ikke sende til adresser, der slutter på .asia, .cat,
> .mobi eller .tel (både afilias-nst.asia, domini.cat, mtld.mobi og
> nic.tel har mailudvekslere tilknyttet)

Tjaa... var bare en gammel en jeg lige fandt på min computer :)
Men så laver vi den da bare liiidt simplere

^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*\@([_a-z0-9\-]+\.)+([a-z]{2,})$

> Derudover tillader tjekket tilsyneladende heller ikke, at man skriver
> sin adresse med stort begyndelsesbogstav.

Så gør vi den da bare endnu simplere

^[a-zA-Z0-9_\-]+(\.[_a-zA-Z0-9\-]+)*\@([_a-zA-Z0-9\-]+\.)+([a-zA-Z]{2,})$

>
> Den slags tjek kan måske være fine for at gøre opmærksom på at
> brugeren måske har lavet en tastefejl. Men de bør ikke være
> "insisterende" på at brugeren har lavet en fejl.
>

^[a-zA-Z0-9_\-]+(\.[_a-zA-Z0-9\-]+)*\@([_a-zA-Z0-9\-]+\.)+([a-zA-Z]{2,})$

Nu blev den da også pæn :)

Anders Boholdt-Peter~ (19-09-2007)
Kommentar
Fra : Anders Boholdt-Peter~


Dato : 19-09-07 22:02

Hej gruppe,

Beklager den lange svartid fra min side i denne debat!!!

Jeg kan se, at der er kommet rigtig mange forslag til, hvordan jeg kan få
løst mit problem med at tjekke for ugyldig indtastet mailadresse i min
formular, tusind tak for alle forslagene!

Jeg vil snarest muligt kikke dem igennem, og vurdere hvilken et af dem jeg
skal bruge.

Jeg henvender mig igen, hvis der er noget som driller mht. implementeringen.

--

/ Anders
http://www.boholdt-petersen.dk



Bertel Lund Hansen (04-09-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 04-09-07 16:36

Anders Boholdt-Petersen skrev:

> Kan man i denne formular et eller andet sted indsætte en variabel, der gør
> at der bliver tjekket om folk har skrevet hele mailadressen?

Du har allerede variablen $_POST['email'] som er den der skal
undersøges, og du tjekker i øjeblikket om den er tom eller
mangler @.

Det er ikke så svært at lægge lidt flere tjek på, men det bliver
omfattende hvis du vil tage højde for alle tænkelige
kombinationer.

> Her tænker jeg på, hvis jeg i det felt hvor der skal indtastes mailadresse
> blot eksempelvis indtaster mail@ditdomaene.d i stedet for mail@ditdomaene.dk
> osv?

..de er også et lovligt TLD (Top Level Domain).

Du kan let tjekke om strengen indeholder et punktum.

   if (empty($_POST['email'])
    || strpos($_POST['email'],'@')===false
    || strpos($_POST['email'],'.')===false
   ) {
      $usermessage.="Du skal angive din mailadresse.\n";
   }

Du kan også sætte et tjek op til at sørge for at TLD er sat
rigtigt, men du risikerer at afvise en korrekt adresse.

I starten af programmet (initdelen):

   $tld = array ('.dk', '.com', '.org', '.net' /* osv. Der er mange. */);

Og nede i koden (lige efter det foregående tjek):

   $pos=strrpos($_POST['email'],'.');
   $td=substr($_POST['email'],$pos);
   if (in_array($td,$tld)==false)
      $usermessage.="Er du sikker på at du har fået adressen rigtig?\n";

Men det kræver at du indsætter alle legale TLD'er i arrayet.

En anden metode består blot i at tvinge folk til at skrive
adressen to gange og så tjekke at de er ens.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Peter Brodersen (04-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 04-09-07 17:07

On Tue, 4 Sep 2007 17:35:52 +0200, Bertel Lund Hansen
<unospamo@lundhansen.dk> wrote:

>Men det kræver at du indsætter alle legale TLD'er i arrayet.

... og listen vil ændre sig over tid.

--
- Peter Brodersen
Kendt fra Internet

Birger (04-09-2007)
Kommentar
Fra : Birger


Dato : 04-09-07 18:37

"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev i en meddelelse
news:3stbwuhkycrr$.w9ejimnk0om2.dlg@40tude.net...
> Anders Boholdt-Petersen skrev:
>
>> Kan man i denne formular et eller andet sted indsætte en variabel, der
>> gør
>> at der bliver tjekket om folk har skrevet hele mailadressen?
>
> Du har allerede variablen $_POST['email'] som er den der skal
> undersøges, og du tjekker i øjeblikket om den er tom eller
> mangler @.
>
> Det er ikke så svært at lægge lidt flere tjek på, men det bliver
> omfattende hvis du vil tage højde for alle tænkelige
> kombinationer.
>
>> Her tænker jeg på, hvis jeg i det felt hvor der skal indtastes
>> mailadresse
>> blot eksempelvis indtaster mail@ditdomaene.d i stedet for
>> mail@ditdomaene.dk
>> osv?
>
> .de er også et lovligt TLD (Top Level Domain).
>
> Du kan let tjekke om strengen indeholder et punktum.
>
> if (empty($_POST['email'])
> || strpos($_POST['email'],'@')===false
> || strpos($_POST['email'],'.')===false
> ) {
> $usermessage.="Du skal angive din mailadresse.\n";
> }
>
> Du kan også sætte et tjek op til at sørge for at TLD er sat
> rigtigt, men du risikerer at afvise en korrekt adresse.
>
> I starten af programmet (initdelen):
>
> $tld = array ('.dk', '.com', '.org', '.net' /* osv. Der er mange. */);
>
> Og nede i koden (lige efter det foregående tjek):
>
> $pos=strrpos($_POST['email'],'.');
> $td=substr($_POST['email'],$pos);
> if (in_array($td,$tld)==false)
> $usermessage.="Er du sikker på at du har fået adressen rigtig?\n";
>
> Men det kræver at du indsætter alle legale TLD'er i arrayet.
>
> En anden metode består blot i at tvinge folk til at skrive
> adressen to gange og så tjekke at de er ens.
>
> --
> Bertel
> http://bertel.lundhansen.dk/ http://fiduso.dk/


Jeg bruger denne ( godt nok i ecma, men det skulle vel være til at
oversætte):

function EmailSyntaxOK( aemail) {
pa = aemail.indexOf( '@');
pd = aemail.indexOf( '.', pa);
return (( pa > 1) && ( pd > pa+2) && ( pd < aemail.length-2));
}

Den checker at der er mere end 1 karakter før @ mindst 2 mellem @ og
(første) punktum efter @, og mindst 2 efter det.
Den fortæller ikke om email adressen er "lovlig" - det kan man ikke -, men
hvis disse betingelserne ikke opfyldes er den det i hvert fald ikke.
Man kan kun sikre sig mod slåfejl ved at have en "gentag" linie, som bør
forhindre paste...

Birger




Bertel Lund Hansen (04-09-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 04-09-07 18:45

Birger skrev:

> Den checker at der er mere end 1 karakter før @

Intet forhindrer mig i at lave en mailadresse med kun ét bogstav
foran @.

> mindst 2 mellem @ og (første) punktum efter @

Domænet c.dk eksisterer og er aktivt. Jeg får ganske vist en
spagfærdig protest fra mit mailprogram når jeg vil svare fyren
der har det, men hans adresse (og et par stykker mere), virker
skam.

> Den fortæller ikke om email adressen er "lovlig" - det kan man ikke -, men
> hvis disse betingelserne ikke opfyldes er den det i hvert fald ikke.

Hm.

> Man kan kun sikre sig mod slåfejl ved at have en "gentag" linie, som bør
> forhindre paste...

Ja. Jeg bruger vist et minimalt tjek et sted, men principielt må
det være folks egen fejl hvis de skriver forkert.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Birger (04-09-2007)
Kommentar
Fra : Birger


Dato : 04-09-07 19:09

"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev i en meddelelse
news:xoyzd6v2kqba$.1btywmsles29u$.dlg@40tude.net...
> Birger skrev:
>
>> Den checker at der er mere end 1 karakter før @
>
> Intet forhindrer mig i at lave en mailadresse med kun ét bogstav
> foran @.
>
>> mindst 2 mellem @ og (første) punktum efter @
>
> Domænet c.dk eksisterer og er aktivt. Jeg får ganske vist en
> spagfærdig protest fra mit mailprogram når jeg vil svare fyren
> der har det, men hans adresse (og et par stykker mere), virker
> skam.
>
>> Den fortæller ikke om email adressen er "lovlig" - det kan man ikke -,
>> men
>> hvis disse betingelserne ikke opfyldes er den det i hvert fald ikke.
>
> Hm.
>
>> Man kan kun sikre sig mod slåfejl ved at have en "gentag" linie, som bør
>> forhindre paste...
>
> Ja. Jeg bruger vist et minimalt tjek et sted, men principielt må
> det være folks egen fejl hvis de skriver forkert.
>
> --
> Bertel
> http://bertel.lundhansen.dk/ http://fiduso.dk/


Der skulle stå : "Den checker at der er mindst 1 karakter før @"..

Mente nu at domæne navne skulle have mindst 2 karakterer - men det gælder
åbenbart kun for .com'er... Laver bare 2-tallet om til et 1-tal så... ;>)

Ved godt at den ikke er perfekt - men den er et brugbart alternativ til en
frygtelig masse regexp og karaktercheck.
Burde måske nok søge på sidste '.' i stedet for efter @, så

function EmailSyntaxOK( aemail) {
pa = aemail.indexOf( '@');
pd = aemail.lastIndexOf( '.');
return (( pa > 1) && ( pd > pa+1) && ( pd < aemail.length-2));
}

kan gøre det.

Om slåfejl og check.
Det er selvfølgelig brugerens egen fejl. Men det kan blive en andens
problem:
Hvis man registrerer brugere i en database, og har funktioner som sender
email pr. automatik, kan det betyde en masse email ud i det blå - uden at
nogen nogen sinde finder ud af det. (Bortset fra afsender-adressen).
Der er også et andet problem med den slags : Der er ikke nogen der
forhindrer andre i at taste min email adresse ind hvor den ikke hører til.
Begge dele kan forhindres med en bekræftelses email - hvilket (også) kan
automatiseres.

Birger



Philip Nunnegaard (04-09-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-09-07 19:21

> Mente nu at domæne navne skulle have mindst 2 karakterer - men det gælder
> åbenbart kun for .com'er... Laver bare 2-tallet om til et 1-tal så... ;>)

Jeg tænkte også straks på metroen i København: www.m.dk
Følger lige tråden fra sidelinien, da jeg selv sidder og er i gang med noget
lignende.
Her vælger jeg dog løsningen med bekræftelsesmailen - evt. suppleret med én
af de løsninger, der kommer frem i denne tråd.


Birger (04-09-2007)
Kommentar
Fra : Birger


Dato : 04-09-07 20:04

"Philip Nunnegaard" <philip@fjerndettehitsurf.dk> skrev i en meddelelse
news:46dda225$0$5155$edfadb0f@dread14.news.tele.dk...
>> Mente nu at domæne navne skulle have mindst 2 karakterer - men det gælder
>> åbenbart kun for .com'er... Laver bare 2-tallet om til et 1-tal så... ;>)
>
> Jeg tænkte også straks på metroen i København: www.m.dk
> Følger lige tråden fra sidelinien, da jeg selv sidder og er i gang med
> noget lignende.
> Her vælger jeg dog løsningen med bekræftelsesmailen - evt. suppleret med
> én af de løsninger, der kommer frem i denne tråd.

Jeg må åbenbart være lige så gammel som jeg ser ud.. ;>)
..com findes også med kun en karakter.!


Hvis man alligevel sender en bekræftelse, er der imho ikke det store behov
for at bruge en masse krudt på at checke en email adresse - som man
alligevel ikke kan finde ud af om er gyldig (eller om den faktisk sender
mail til den person der indtaster den).
Omvendt er der ingen grund til at sende en bekræftelse til noget der ikke
kan være en email adresse. Så et simpelt check på syntaxen skulle være nok.

Birger



Anders Boholdt-Peter~ (04-09-2007)
Kommentar
Fra : Anders Boholdt-Peter~


Dato : 04-09-07 20:27

"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev i en meddelelse
news:3stbwuhkycrr$.w9ejimnk0om2.dlg@40tude.net...
> Du kan også sætte et tjek op til at sørge for at TLD er sat
> rigtigt, men du risikerer at afvise en korrekt adresse.
>

Det kan jeg godt se at jeg gør, hvis jeg ikke får alle toplevel domæner med.
> I starten af programmet (initdelen):
>
> $tld = array ('.dk', '.com', '.org', '.net' /* osv. Der er mange. */);
Skal stjernen være med i ovenstående kode (altså der hvor der står "der er
mange"?
>
> Og nede i koden (lige efter det foregående tjek):
>
> $pos=strrpos($_POST['email'],'.');
> $td=substr($_POST['email'],$pos);
> if (in_array($td,$tld)==false)
> $usermessage.="Er du sikker på at du har fået adressen rigtig?\n";

Jeg vil kikke på ovenstående løsningsforslag vd lejlighed.

Tusind tak for alle de hurtige svar - det er virkelig forenemt!

--

/ Anders
http://www.boholdt-petersen.dk



Bertel Lund Hansen (04-09-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 04-09-07 21:14

Anders Boholdt-Petersen skrev:

>> $tld = array ('.dk', '.com', '.org', '.net' /* osv. Der er mange. */);

> Skal stjernen være med i ovenstående kode (altså der hvor der står "der er
> mange"?

En kommentar i PHP kan laves med /* som starttegn og */ som
sluttegn. Fordelen er dels at man kan lave flere linjer mellem
tegnene, dels at man kan slutte kommentaren inden for samme
linje.

// Tvinger hele resten af linjen til at være en kommentar.

Du kan altså slette /* osv. Der er mange. */ hvis du kun vil have
det til at fungere.

Somme tider skriver jeg kommentarer på den måde i et kodeforslag
fordi det godt kan give mening at medtage det i den færdige kode.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Philip Nunnegaard (04-09-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 04-09-07 21:34

> Somme tider skriver jeg kommentarer på den måde i et kodeforslag
> fordi det godt kan give mening at medtage det i den færdige kode.

Bruger selv tit at skrive noget a la
/* Pseudo-kode:
gør dit
gør dut
gør dat
Pseudo-kode slut */

God ide at lade det stå bagefter. Den vil jeg tage til mig.


Bo Meyer (05-09-2007)
Kommentar
Fra : Bo Meyer


Dato : 05-09-07 04:17

Anders Boholdt-Petersen skrev:

> Her tænker jeg på, hvis jeg i det felt hvor der skal indtastes mailadresse
> blot eksempelvis indtaster mail@ditdomaene.d i stedet for mail@ditdomaene.dk
> osv?

Hej,

Følgende funktion har jeg stor glæde af at anvende:

function emailok($str) {
return eregi( "^"
."^[a-z]+([_\\.a-z0-9-]+)*" //user
."@"
."([a-z0-9]+([\.-][a-z0-9]+)*)+" //domain
."(\\.[a-z]{2,})" //sld, tld
."$", $str, $regs) ? true : false;
}

Mvh./Bo

Otto Wikkelsø (05-09-2007)
Kommentar
Fra : Otto Wikkelsø


Dato : 05-09-07 05:50

"Anders Boholdt-Petersen" skrev:
>
> Kan man i denne formular et eller andet sted indsætte en variabel, der gør
> at der bliver tjekket om folk har skrevet hele mailadressen?
>

Hej Anders
Jeg bruger nedenstående. Det er en kombination af "lånte" sager, med mine
egne ændringer/tilføjelser.
Koden fanger stort set alle fejl, og tillader alle domæner. m@m.dk er også
gyldig, mens m@.m.dk ikke er.

<? function check_email_address($f_mail) {
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $f_mail)) {
return false;
}
$email_array = explode("@", $f_mail);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if
(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
$local_array[$i])) {
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false;
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$",
$domain_array[$i])) {
return false;
}
}
}
return true;
}
if (!$f_mail) { ?>
Der er ikke indtastet en email adresse. Kopi af denne bestilling kan ikke
sendes pr. mail.<br>
<? } else { ?>
<td><? echo "";
if (check_email_address($f_mail)) {
echo $f_mail . '<br>Email adressen ser ud til at være ok.';
} else {
echo $f_mail . '<br><font color="Red"><b>Check email adressen</b>.<br>Det
ser ud som om der er en tastefejl i din email.</font><br>';
}
?>

--
Otto Wikkelsø
Koden kan testes på adressen:
http://www.min-bog.dk/form/tvillingebogen2.php



Mikkel Z. Herold (05-09-2007)
Kommentar
Fra : Mikkel Z. Herold


Dato : 05-09-07 11:03

On 04-09-2007 16:36 Anders Boholdt-Petersen wrote:
> Kan man i denne formular et eller andet sted indsætte en variabel, der gør
> at der bliver tjekket om folk har skrevet hele mailadressen?

Jeg bruger denne:

if
(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\.)+[a-z]{2}([zmuvtgl]|fo|me|ia|bi)?$",$email))
{
echo "Din e-mailadresse er ikke gyldig.";
}

Den skulle også tage højde for adresser der ender på .asia, .cat,
..mobi og .tel, men den tjekker ikke, om bogstav-kombinationen efter det
sidste punktum er et gyldigt tld (top level domain).

Mvh. Mikkel

--
"But a galloping line of white horses
Said that soon we were in for a race"
Sting - The Wild Wild Sea

www.mzh.dk

Peter Brodersen (05-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 05-09-07 13:21

On Wed, 05 Sep 2007 12:02:52 +0200, "Mikkel Z. Herold"
<mikkel@[remove_this]mzh.dk> wrote:

>if
>(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\.)+[a-z]{2}([zmuvtgl]|fo|me|ia|bi)?$",$email))
>{
>echo "Din e-mailadresse er ikke gyldig.";
>}
>
>Den skulle også tage højde for adresser der ender på .asia, .cat,
>.mobi og .tel, men den tjekker ikke, om bogstav-kombinationen efter det
>sidste punktum er et gyldigt tld (top level domain).

... men .coop, .museum og .aero vil stadigvæk fejle.

Det er noget rod at forsøge at lave udtømmende lister. Hvis man vil,
kan man eventuelt splitte på @ og lave et navneserver-opslag om der er
en A- eller en MX-record for hostnavnet.

Det er også det, der vil ske, når man rent faktisk forsøger at sende
mailen.

--
- Peter Brodersen
Kendt fra Internet

Bo Meyer (05-09-2007)
Kommentar
Fra : Bo Meyer


Dato : 05-09-07 17:04

Peter Brodersen skrev:

> Det er noget rod at forsøge at lave udtømmende lister. Hvis man vil,
> kan man eventuelt splitte på @ og lave et navneserver-opslag om der er
> en A- eller en MX-record for hostnavnet.

Ah, således f.eks.:

function _emailok($str) {
if (eregi( "^"
."^[a-z]+([_\\.a-z0-9-]+)*" //user
."@"
."([a-z0-9]+([\.-][a-z0-9]+)*)+" //domain
."(\\.[a-z]{2,})" //sld, tld
."$", $str, $regs) ) if (getmxrr($regs[2].$regs[4], $hosts)) return true;
return false;
}

Mvh./Bo

Peter Brodersen (05-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 05-09-07 23:40

On Wed, 05 Sep 2007 18:04:00 +0200, Bo Meyer <bo.meyer@gmail.com>
wrote:

>function _emailok($str) {
> if (eregi( "^"
> ."^[a-z]+([_\\.a-z0-9-]+)*" //user
> ."@"
> ."([a-z0-9]+([\.-][a-z0-9]+)*)+" //domain
> ."(\\.[a-z]{2,})" //sld, tld
> ."$", $str, $regs) ) if (getmxrr($regs[2].$regs[4], $hosts)) return true;
> return false;
>}

Næsten, ja, men er der ingen MX-record, er det i orden at prøve med
A-recorden:

http://dk2.php.net/getmxrr
==
Note: This function should not be used for the purposes of address
verification. Only the mailexchangers found in DNS are returned,
however, according to » RFC 2821 when no mail exchangers are listed,
hostname itself should be used as the only mail exchanger with a
priority of 0.
==

(og så er getmxrr() ikke implementeret under Windows, desværre)


I øvrigt hyggeligt at se dit navn igen

--
- Peter Brodersen
Kendt fra Internet

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

Månedens bedste
Årets bedste
Sidste års bedste