16. august 2006 - 16:20
Der er
27 kommentarer og 1 løsning
Tjek indtastet email adresse
Nedenstående funktion, tjekker forskellige valideringer af email-adressen. Men den "fanger" ikke, hvis der skrives en email med mellemrums-tegn (space). En der kan hjælpe med denne tilføjelse. function check_email($email) { if(empty($email)) return TRUE; if((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) { $host = explode('@', $email); if(checkdnsrr($host[1].'.', 'MX') ) return TRUE; if(checkdnsrr($host[1].'.', 'A') ) return TRUE; if(checkdnsrr($host[1].'.', 'CNAME') ) return TRUE; } return FALSE; }
Annonceindlæg fra Computerworld
16. august 2006 - 16:26
#1
Kig i manualen under preg_match, der står en kommentar omkring det. Plus der må ikke være en CNAME record bruges ikke til post, der bruges udveksleren på MX og hvis ingen MX findes bruges A recorden.
16. august 2006 - 16:36
#2
if(preg_match("/\b[A-Z0-9._%+-]+@[A-Z0-9._%-]+\.[A-Z0-9._%-]{2,4}\b/i", $email)) { echo 'Du har indtastet en ugyldig mail-adresse.'; }
16. august 2006 - 16:37
#3
Det sidste du skriver: Plus der........ forstår jeg ikke en meter af. Jeg er næste novice på PHP.
16. august 2006 - 16:39
#4
Til futurebb: Skal jeg erstatte den eksisterende "if(preg_match......." med det du foreslår eller er det en tilføjelse.
16. august 2006 - 16:41
#5
Det er i stedet for din kode..
16. august 2006 - 16:42
#6
Det har intet med PHP at gøre, det er hvordan DNS og post hører sammen...
16. august 2006 - 16:43
#7
Jeg kan se, at din er noget anderledes. Er det noget du har afprøvet / har erfaringer med. Jeg kan ikke gennemskue forskellen.
16. august 2006 - 16:49
#8
futurebb, er info@denmarks.national.museum ikke en valid email?
16. august 2006 - 16:50
#9
Til jss: Kan du forklare, hvad jeg skal tjekke/gøre. Vi har systemet kørende på en Unix-server hos
www.web10.dk
16. august 2006 - 16:51
#10
jss? Mener du mig?
16. august 2006 - 16:52
#11
Sorry - ja det er iss?
16. august 2006 - 17:00
#12
Du må ikke tage CNAME med...
16. august 2006 - 17:03
#13
Vil det sige, at jeg skal fjerne linje: if(checkdnsrr($host[1].'.', 'CNAME') ) return TRUE;
16. august 2006 - 17:11
#14
Lavet ud fra din og WK Group's (fra manualen) function check_email($email){ return count($email = explode('@', $email, 3)) == 2 && strlen($email[0]) < 65 && strlen($email[1]) < 256 && preg_match("#^[$x]+(\.?([$x]+\.)*[$x]+)?$#", $email[0]) && preg_match('#^(([a-z0-9]+-*)?[a-z0-9]+\.)+[a-z]{2,6}.?$#', $email[1]) && (checkdnsrr($email[1], 'MX') || checkdnsrr($email[1], 'A')); } Den kan du lige teste og se om den opfylder hvad du mene den skal... har dog ikke lige testet den...
16. august 2006 - 17:11
#15
Sorry, min fejl..
16. august 2006 - 17:27
#16
$emails = array( "email@email.com", "email2@email.xxx", .... osv "bla@bla.bla" ); function check_email($email){ $x = '\d\w!\#\$%&\'*+\-/=?\^_`{|}~'; return count($email = explode('@', $email, 3)) == 2 && strlen($email[0]) < 65 && strlen($email[1]) < 256 && preg_match("#^[$x]+(\.?([$x]+\.)*[$x]+)?$#", $email[0]) && preg_match('#^(([a-z0-9]+-*)?[a-z0-9]+\.)+[a-z]{2,6}.?$#', $email[1]) && (checkdnsrr($email[1], 'MX') || checkdnsrr($email[1], 'A')); } foreach ($emails as $email) { echo "<br>".$email.": ".(check_email($email)?"Valid":"Invalid"); } Så skal du bare rette arrayet til de emails du vil teste for...
16. august 2006 - 17:34
#17
16. august 2006 - 18:18
#18
Jeg er nødt til lige og spørge: Emailfunktionen bruger jeg i flere programmer, og ved mit tjek, har jeg en if-sætning. Jeg kan ikke lige gennemskue, hvordan jeg får det tilpasset dit kode. Vil du hjælpe mig med det? Tjek-koden ser sådan her ud: if($email) { if(check_email($email) === FALSE) { $error = "$error Emailadressen er indtastet forkert!"; } }
16. august 2006 - 18:27
#20
Hvis jeg skriver 2 valide adresser i boksen på
http://molberg.eu/testemails.php eller samme email 2 gange, så skriver den at den øverste er "invalid". Der må være noget galt med koden!!
16. august 2006 - 19:38
#21
Jeg har fået det til at virke - det var bare at komme i gang. Tak for hjælpen.
16. august 2006 - 19:41
#22
Der er ikke noget galt med koden, der er noget galt med din browser... det er der nu taget højde for... Og du kan bare erstatte med den funktion, der skal intet laves om.
16. august 2006 - 19:45
#23
Var det ikke iss der skulle have pointsne?
16. august 2006 - 19:49
#24
Samler ikke...
16. august 2006 - 19:52
#25
UNDSKYLD iss. Du skal i hvert fald have tak for hjælpen, for det var dine kommentarer, der løste mit spørgsmål.
16. august 2006 - 19:58
#26
Velbekommen, dog siger den nye udgave ikke at en tom email er ok, hvis du vil have det skal du lige sætte den linie på også (kan dog ikke se hvorfor en tom streng skal være valid email)
16. august 2006 - 20:25
#27
Jeg tjekker på anden vis om feltet er udfyldt - så det hele er så fint nu. Tak endnu engang.
16. august 2006 - 20:30
#28
Og tak for karma:D
Vi tilbyder markedets bedste kurser inden for webudvikling