Blib Skrevet 5. august 2003 Del Skrevet 5. august 2003 Jeg *vet* at jeg fant en side som hadde et script som sjekket at emailen var i det formatet den skulle være, men nå finner jeg ikke den siden igjen. Så, er det noen som vet hvor jeg kan finne det? Lenke til kommentar
Valagar Skrevet 5. august 2003 Del Skrevet 5. august 2003 Hvis du vil lage et på egenhånd finner du informasjon om hvordan en gyldig e-postadresse skal se ut i RFC-822. Men jeg må advare med en gang om at det er MYE informasjon Vil du derimot ha noe som er ferdiglaget kan du søke i google etter php email validation, og du finnes en hel del. Første treff hos meg var en algoritme som så brukbar ut... Lenke til kommentar
[kami] Skrevet 5. august 2003 Del Skrevet 5. august 2003 001 function CheckEmail($adr){ 002 // Parameter: 003 // $adr -> Email Adress 004 // Rückgabewerte: 005 // TRUE -> everything fine 006 // Else, returns array: 007 // Array(code, part) 008 // Code s.u.; part: Part which caused error 009 // -1 -> no @ in adr 010 // -2 -> More than 1 @ (alas theoretically correct...) 011 // -3 -> Error in Local-Part 012 // -4 -> Error in Domainname 013 // -5 -> Domain not existent 014 // -6 -> No MX for Domain 015 016 // Regexpe 017 018 $re = array( 019 // - Local-Part 020 'lp' => '[a-z_d][-_.a-zd]{0,}', 021 // - Domain 022 'dom' => '(?:[a-zd]{1,}(?:[-a-zd]{0,}?){0,}?.){0,}[a-z]{2,3}.{0,1}' 023 ); 024 025 foreach ($re as $typ => $wert){ 026 027 $re[$typ] = '÷^' . $wert . '$÷i'; 028 } 029 030 if (('' == $adr) || 031 032 (FALSE === ($parts = split('@', $adr))) 033 ){ 034 // Nothing to do 035 return array('code' => -1, 'part' => $adr); 036 } 037 if (2 > ($part_anzahl = count($parts))){ 038 // Less than 1 @ (also 0) 039 return array('code' => -2, 'part' => $adr); 040 } 041 if (2 < $part_anzahl){ 042 // Too many @'s! 043 return array('code' => -3, 'part' => $adr); 044 } 045 if (! preg_match($re['lp'], $parts[0])){ 046 // Local-Part error! 047 return array('code' => -4, 'part' => $parts[0]); 048 } 049 if (! preg_match($re['dom'], $parts[1])){ 050 // Domain looks bogus! 051 return array('code' => -5, 'part' => $parts[1]); 052 } 053 if (! checkdnsrr($parts[1], 'ANY')){ 054 // Domain not existant 055 return array('code' => -6, 'part' => $parts[1]); 056 } 057 if (!checkdnsrr($parts[1], 'MX') && !checkdnsrr($parts[1], 'A')){ 058 // No MX for domain 059 return array('code' => -7, 'part' => $parts[1]); 060 } 061 062 // When we get here, everything is fine! 063 064 return TRUE; 065 } 066 http:// http://www.phpbuilder.com/mail/php-general...001091/1660.php Lenke til kommentar
Blib Skrevet 5. august 2003 Forfatter Del Skrevet 5. august 2003 Jesus! Greit, det var *ikke* slik jeg hadde tenkt meg Tror nok heller bare tar og mekker et lite et selv. Tenkte mer på bare å sjekke om det var en alfakrøll der, at det var et domene oppgitt osv. Veldig raskt og lite. Hurtigsjekk liksom bare Lenke til kommentar
Valagar Skrevet 6. august 2003 Del Skrevet 6. august 2003 Dette kan gjøres med en relativt enkel regex. For eksempel: if (!eregi("^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-_]+.)*([a-z0-9-]+)(.[a-z]{2,4}))$', $email", $email)) // Epostadressen er gyldig else // Epostadressen er ikke gyldig Vet ikke hvor bra denne er, fant den bare på nettet, men den kan jo få deg til å tenke litt Orker ikke lage en skikkelig nå. Lenke til kommentar
[kami] Skrevet 6. august 2003 Del Skrevet 6. august 2003 den funksjonen jeg pasta sjekker for @ og domene. Men den regexp'n funker bra den også, & ser kanskje ikke så skummel ut (har brukt den før i script og den tar det meste.) (den funksjonen jeg pasta er vissnok litt raskere og bedre ifølge phpbuilder btw.) Lenke til kommentar
tvangsgreie Skrevet 6. august 2003 Del Skrevet 6. august 2003 Vær oppmerksom på at det er lov til å skrive mye mer i en epostadresse enn de fleste tror, slik at disse enkle regex-testene vanligvis vil forkaste endel varianter av gyldige adresser. Den Valgard sin postet vil forkaste selv enkle gyldige adresser. Jeg pleier f.eks. vanligvis å skrive navnetpå[email protected] når jeg registrerer meg et sted. Det vil ikke være lov med den regex-testen. Den virker dessuten ikke slik den er ment å virke, siden ikke . blir escapet utenfor []. Lenke til kommentar
Valagar Skrevet 6. august 2003 Del Skrevet 6. august 2003 Som sagt har jeg ikke skrevet den over selv, jeg bare pastet fra et annet forum. Dersom man vil være ekstremt pirkete må man lese hele standarden, eventuelt kan man bare være litt "greie" og godkjenne alt som er av typen [email protected]. En regex av den typen kan se slik ut: ^[^@]+@[^.]+.[^@]+$ Jeg kan ikke helt se hvilke gyldige adresser den avviser, men det er mulig at det er feil i den... Skrik ut hvis jeg har skrevet noe feil For øvrig er jo den beste løsningen å tvinge folk til å klikke på en link via eposten, men dette er selvsagt ikke alltid ønskelig. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå