12. december 2009 - 15:38Der er
9 kommentarer og 1 løsning
Lille tilretning af kontrol-funktion til korrekt email
Hejsa. Jeg har denne funktion til at kontrollere for korrekt indtastning. Den vil ikke acceptere domænenavne med .info (altså 4 tegn til sidst). Er det nemt løst ?
Jeg har ikke umiddelbart gennemskuet hele din expression i if(preg_match....), men hvis du siger at det virker med domainenavne med to eller tre tegn efter det sidste . saa maa det vel vaere saadan.
Jeg tester mere begraenset paa mit system som saadan:
Saa faar jeg som resultat "matches," men hvis jeg proever med $email = "christian.jorgensen@skynet.info" saa faar jeg ingen match. Det kan afhjaelpes ved at jeg aendrer {2,3} til {2,4}, altsaa
<? $email = "christian.jorgensen@skynet.info"; if(preg_match('/^.+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z.]{2,4}|[0-9]{1,3})$/',$email) )echo "matches<br/>"; ?> hvilket giver "matches."
Saa proev i din expression at erstatte {2,3} med {2,4), altsaa:
repox: Hvorfor skulle jeg det? Jeg synes fx. at det er smart, at scriptet kan tjekke om domænet eksisterer. I øvrigt har jeg anvendt scriptet længe uden problemer. Der har åbenbart ikke været indtastet en email-adresse i systemet med endelsen "info".
Christian_belgien: Tak for bidraget - det løste problemet. Sender du et svar!
#3 Af samme årsag som man ikke skyder gråspurve med kanoner for.
Men hvis du synes det er smart at man kontrollerer domænet, hvorfor så ikke nøjes med den? Så havde du ikke behøvet de to andre... men skidt, du synes det er en smart funktion samlet og så er det jo fint at du fik det til at virke som du gerne ville...
Repox: Åhrrr - så forstår jeg din pointe :) Problemet er bare, at nogle servere (vist nok windows servere) ikke understøtter checkdnsrr()- derfor er det rart i disse tilfælde, at jeg så kan tjekke indtastnings-syntaxen. Scriptet anvendes nemlig på forskellige servere/webhoteller.
#6 Men, hvis det check ikke er fyldestgørende alligevel, er det så ikke godt nok blot at nøjes med en enkelt regexp? Istedet for to regexp's og et dns opslag? Du benytter jo ikke den data du opsamler med dns opslaget alligevel, så hvorfor lave et unødvendigt opslag?
Og lige for at følge op på det; dns opslaget er jo unødvendigt da emailadressen opghpetughpghopdghapoghapioghapruioghapioghpotghaprtghaoprghaegaertgaeg@example.org sandsynligvis ikke har en modtager på example.org, men alligevel klarer alle tre checks (såfremt dns opslaget virker på den server også).
Jeg må indrømme, at jeg ikke kan gennemskue de 2 x preg_match(), så du kan sikkert have ret i at den ene kan udelades.
Tjekket på domænet, synes jeg dog er meget smart, idet scriptet som regel fanger stavefejl i domænenavnet (fx. hodmail.com). Og jeg er helt bevidst om, at scriptet ikke kan fange alt - herunder det der står foran "@". Men jo mere den fanger, desto bedre.... :)
Det afhænger nok også af hvad du skal bruge det til i virkeligheden...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.