Avatar billede kischi Novice
10. maj 2013 - 23:50 Der er 15 kommentarer

Validere på email endelse

Hej,

Jeg har lavet en side, hvor det er muligt at oprette brugere.
Den validere indtil videre på emailen almindeligt så den ser om det er en gyldig email-adresse.

Er der en der kan hjælpe mig med at få den til at validere på email endelsen, så det for eksempel kun er visse E-mail endelser som kan registrere sig?

Min valideringskode ser sådan her ud:
if ((utf8_strlen($this->request->post['email']) > 96) || !preg_match('/^[^\@]+@.*\.[a-z]{2,6}$/i', $this->request->post['email'])) {
              $this->error['email'] = $this->language->get('error_email');

Jeg håber der er nogen som kan hjælpe.

Tak
        }
Avatar billede erikjacobsen Ekspert
11. maj 2013 - 00:25 #1
if ((utf8_strlen($this->request->post['email']) > 96) || !preg_match('/^[^\@]+@.*\.(dk|com|sex)$/i', this->request->post['email'])) {

Dette skulle kun tillade .dk og .com og .sex - men test det venligst først ;)
Avatar billede kischi Novice
11. maj 2013 - 00:40 #2
Hmm når jeg indtaster det, er det kun .com som virker.
Ikke de andre endelser, gør jeg noget forkert?

Sådan ser koden ud nu:

if ((utf8_strlen($this->request->post['email']) > 96) || !preg_match('/^[^\@]+@.*\.[a-z]{2,6}[dk|com]$/i', $this->request->post['email'])) {
              $this->error['email'] = $this->language->get('error_email');
        }
Avatar billede erikjacobsen Ekspert
11. maj 2013 - 00:51 #3
Runde parenteser, ikke [dk|com] med (dk|com)
Avatar billede scootergrisen Nybegynder
11. maj 2013 - 00:53 #4
Jeg forstår ikke ideen bag og ville bloker bestemte email endelser.
Hvad skulle det gøre godt for ?
Avatar billede erikjacobsen Ekspert
11. maj 2013 - 00:56 #5
Enig, som sådan. Der var et gratis dansk webhotel for nogle år siden, som fik fjernet en del "spam"-oprettelser ved at kræve .dk email. Det virkede for dem.
Avatar billede kischi Novice
11. maj 2013 - 03:51 #6
Nu har jeg ændret det til runde parenteser, men ingen af dem virker nu?

Koden ser sådan ud nu:

if ((utf8_strlen($this->request->post['email']) > 96) || !preg_match('/^[^\@]+@.*\.[a-z]{2,6}(dk|com)$/i', $this->request->post['email'])) {
              $this->error['email'] = $this->language->get('error_email');
        }

Grunden til at det skal være specifikke mail endelser er at det kun er visse universitets emails som skal kunne oprette sig som bruger.

Ved i hvad fejlen kan være nu?

Tak
Avatar billede erikjacobsen Ekspert
11. maj 2013 - 11:24 #7
Prøv lige at skrive det som i #1

Hvis det ikke bare er .dk og .com, men noget mere, så skriv lige hvad det skal være - så kan du få det hele ordnet.
Avatar billede scootergrisen Nybegynder
11. maj 2013 - 16:49 #8
Skal [a-z]{2,6} ikke slettes ?
Avatar billede kischi Novice
12. maj 2013 - 11:04 #9
Hvis jeg skriver det som står i #1 så får jeg denne fejl:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/www/abroadbible.com/catalog/controller/account/register.php on line 365
Avatar billede erikjacobsen Ekspert
12. maj 2013 - 11:54 #10
Vis os hvad du skriver.
Avatar billede olsensweb.dk Ekspert
12. maj 2013 - 12:14 #11
er $ i lav kurs lige pt ??, den er forsvundet foran this i #1 :)

preg_match('/^[^\@]+@.*\.(dk|com|sex)$/i', $this->request->post['email']))

så har du bare kopieret er det klart du får en fejl.

udtrykket virker
kører også på
http://www.udvikleren.dk/forum/39905/valider-paa-e-mail-endelser/
Avatar billede erikjacobsen Ekspert
12. maj 2013 - 12:20 #12
Ja, den er da helt væk. Jeg satte to linier sammen, og fik fjernet lidt for meget.
Avatar billede kischi Novice
12. maj 2013 - 12:37 #13
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:
if ((utf8_strlen($this->request->post['email']) > 96) || !preg_match('/^[^\@]+@.*\.(edu|com|cphbusiness.dk)$$/i', $this->request->post['email'])) {
              $this->error['email'] = $this->language->get('error_email');
        }
Avatar billede erikjacobsen Ekspert
12. maj 2013 - 17:37 #14
Jeg skal lige have skåret ud i pap hvilke email-adresse du ønsker at tillade...?
Avatar billede kischi Novice
12. maj 2013 - 17:56 #15
Jeg kan ikke lige huske nu hvilke det er.
Men det er strengt nødvendigt at vide hvilke E-mail adresser?

Kan jeg ikke bare selv ændre dem senere i koden?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester