valider på E-mail endelser

Tags:    php

<< < 12 > >>
Hej,

Jeg har udviklet en hjemmeside i et system som hedder opencart, hvor brugere kan registrere sig.

Indtil videre bliver de valideret på om E-mailen er korrekt.
Jeg kunne godt tænke mig at validere på E-mail endelsen, det er kun folk med specifikke email endelser som kan registrere sig.
Er der en der kan hjælpe mig med det?

Indtil videre har jeg denne kode, og skal bygge videre på den for at få endelserne til at virke tror jeg.

Fold kodeboks ind/udPHP kode 


Jeg er ret sikker på det er den rigtige kode jeg har fat i, kan det ikke passe?

Tak



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
det minder meget om det udtryk erikjacobsen gav på samme spørgsmål http://www.eksperten.dk/spm/980980 #1 (virker i øvrigt)

....

@michael har du nogle gode link ??


Jeg tyer kun til http://www.regular-expressions.info/, når jeg glemmer hvordan negative lookback og lookahead, og tester nogle gange komplekse regex med http://gskinner.com/RegExr/ :o)

Derudover har jeg luret logikken i regulære udtryk. :o)



Eksempel hvis du kun vil have at .edu (TLD) skal have love.
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 11.05.2013 01:59 af Bruger #12793
Det er egentlig flere endelser som den skal godkende.
Nu har jeg lavet denne kode:

Fold kodeboks ind/udPHP kode 


Men nu virker ingen af endelserne, men hvis jeg ændre det til firkantede parenteser er du kun .com der virker.

Ved du hvad fejlen kan være?

Tak



Man kan ikke bare sætte det i enden af det eksisterende.

Derfor er man nødt til at forstå at først nævnte regulære udtryk, matcher en hel e-mail. Udvider man så det regulære udtryk, skal det match en e-mail plus til det tilføjede. Derfor skal det regulære udtryk ændres der hvor det matcher TLD.

Fold kodeboks ind/udKode 




det minder meget om det udtryk erikjacobsen gav på samme spørgsmål http://www.eksperten.dk/spm/980980 #1 (virker i øvrigt)

for bedre at forstå regexp kan man med fordel læse
danske
en lille artikel serie fra eksperten.dk:
Regulære udtryk, 1. del
Regulære udtryk, 2. del
Regulære udtryk, 3. del
Regulære udtryk, 4. del
http://www.phpartikler.dk/artikler/regexp.php
http://www.nielsgamborg.dk/wordpress/programmering/regulaere_udtryk_regular_expressions.htm

engelske
http://xregexp.com/
http://regexlib.com/
http://www.regular-expressions.info/
http://lawrence.ecorp.net/inet/samples/regexp-format.php
http://html5pattern.com/

og så lave en helveds massse test,

@michael har du nogle gode link ??




Indlæg senest redigeret d. 11.05.2013 11:21 af Bruger #16075
Hej igen,

Jeg forstår ikke helt hvad i skriver, altså jeg forstår jo egentlig godt det første, men jeg ved bare ikke hvordan jeg tilføjer noget.

Nu har jeg gjort som i Michaels kode, slettet de andre ting og kun indsat koden til endelserne, men det virker stadig ikke:

Fold kodeboks ind/udPHP kode 




Det regulære udtryk virker fint: http://regexr.com?34rb9

Har du prøvet at lure om der er noget andet galt?
Angiver du en email-adresse der bruger .com eller .dk som TLD. F.eks. @gmail.com eller @email.dk ?



Ja, nu virker det faktisk, men så kom jeg i tanke om, at det der nu virker det er efter punktummet, så .com eller .dk faktisk.

Men er der en måde jeg kan tjekke det efter @

Så for eksempel den tjekker på: @cphbusiness.dk eller @cbs.dk
så den tjekker fra efter @

Nu ser min kode sådan ud:

Fold kodeboks ind/udPHP kode 




ca sådan
Fold kodeboks ind/udKode 


så skal det der kommer efter @ være enten cbs.dk eller cphbusiness.dk
test@cbs.dk = valid OK
test@test.cbs.dk = invalid OK

men er det smart, at det skal komme lige efter @ ??, hvad med mailaddressen:
administration@frb.cbs.dk ?? administration@kbhnv.cbs.dk ?? virker da meget valide, men vil blive afvist.
tænk over hvilke filter du laver, det kan filtrerer for meget af




Matcher alle med @*.edu, @*.com, eller @*.dk, ellers alle med @cphbusiness.dk eller @gmail.com eller @email.dk
/^[^\@]+@((.*\.(edu|com|dk))|(cphbusiness\.dk|gmail\.com|email\.dk))$/i

Eller mere konkret:

Alle med @cphbusiness.dk eller @gmail.com eller @email.dk
/^[^\@]+@(cphbusiness\.dk|gmail\.com|email\.dk)$/i



Indlæg senest redigeret d. 12.05.2013 13:31 af Bruger #10216
<< < 12 > >>
t