Avatar billede mason Nybegynder
23. oktober 2007 - 14:46 Der er 13 kommentarer og
2 løsninger

tilpasse email typer i PHP formular

Hej

Jeg har lavet en PHP baseret formular på en hjemmeside, hvorfra folk kan sende beskeder. I denne formular skal de bla. indtaste deres email adresse. Jeg har dog fundet ud af formularen ikke vil tillade visse typer af email adresser.
Hvis en person indtaster en emailadresse med kun ét tegn efter @, så melder den fejl. F.eks. vil den ikke godtage: info@a.dk, men hvis man taster info@aa.dk vil den godt.
Jeg ved ikke præcist hvor og hvordan jeg skal ændre dette i PHP filen - er der nogen som kan hjælpe med det??

Jeg sender det udpluk af filen som jeg tror der skal rodes i. Jeg sender gerne den hele samlede kode, hvis der er en flink sjæl som har mulighed for at hjælpe mig:

if (($email) || ($EMAIL)) {

  $email = trim($email);

  if ($EMAIL)

      $email = trim($EMAIL);

  if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {

      print_error("<b>Den indtastede email-adresse er ikke gyldig. Prøv igen og indtast venligst gyldig e-mail adresse.</b>");

  }

  $EMAIL = $email;

}

Mange hilsner fra
Mason
Avatar billede di8leva Nybegynder
23. oktober 2007 - 14:57 #1
jeg tror du skal byde:

if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {

mod:

if (!eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {



jeg har fjernet en "[0-9a-z-]"
Avatar billede di8leva Nybegynder
23. oktober 2007 - 14:58 #2
Men hvorfor vil du det? Der findes vel ikke en eneste domäne som indeholder bare et tegn?
Avatar billede dotcom1 Nybegynder
23. oktober 2007 - 15:01 #3
>> di8leva: Det gør der skam. F.eks. Metroen i København: www.m.dk
Avatar billede hans_henrik Nybegynder
23. oktober 2007 - 15:02 #4
hvad med www.m.dk (metro)
Avatar billede di8leva Nybegynder
23. oktober 2007 - 15:03 #5
sådan der, så lärte man det også :)
Avatar billede majbom Novice
23. oktober 2007 - 16:17 #6
hvis man er kunde hos tdc, kan man også få en email-adresse på domænet c.dk

og www.d.dk er også i brug, så der er da nogle stykker :)
Avatar billede nielle Nybegynder
23. oktober 2007 - 19:12 #7
1) I stedet for at bruge ereg-funktionerne bør man bruge preg-versionerne - så overlever den del af din kode til næste version af PHP. Foruden dette så a) performer den bedre, og b) du har mange flere muligheder for at sammensætte dine mønstre.

2) Der findes efterhånden en del TLD'er som er længere end 2-3 tegn:

http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains

3) Der er faktisk ingen specielle restriktioner på hvad der må stå foran @-tegnet.

4) Hvordan med danske og andre nationale bogstaver?

http://www.dk-hostmaster.dk/index.php?id=68

Må folkene fra http://www.øl.dk ikke registrer deres mailadresse hos dig?

5) Alt i alt er dete et meget bedre tjek:

if (!preg_match("#^[^@]+@[\w-]+(\.[\w-]+)*\.[a-z]{2,}$#i", $email)) {
    print_error("<b>Den indtastede email-adresse er ikke gyldig. Prøv igen og indtast venligst gyldig e-mail adresse.</b>");
}

6) Og så husk i øvrigt på at du kan tjekke lige så meget du vil - det er alligevel ikke nogen garanti for at email-adressen er ægte eller at nogen faktisk læser de mails der sendes til den...
Avatar billede mason Nybegynder
23. oktober 2007 - 20:32 #8
Tak for alle de gode indlæg. Jeg kunne bruge både di8leva og Nielle's kode, det viker tip top. Men med Nielle's kan jeg dog stadig ikke godtage æ,ø og å. Burde den ikke kunnde det med den kode du har sktevet, eller skal der mere til?
Avatar billede nielle Nybegynder
23. oktober 2007 - 20:36 #9
Hvorvidt den acceptere de danske bogstaver afhænger af om din side er sat til at bruge dansk locale:

http://dk2.php.net/setlocale

Du kan dog selv udvide den til at virke med den på trods af dette:

if (!preg_match("#^[^@]+@[\wæøå-]+(\.[\wæøå-]+)*\.[a-z]{2,}$#i", $email)) {
Avatar billede nielle Nybegynder
23. oktober 2007 - 20:39 #10
Eller - inspireret af det oprindelige mønster - denne:

if (!preg_match("#^[^@]+@([\wæøå-]+\.)+[a-z]{2,}$#i", $email)) {
Avatar billede mason Nybegynder
23. oktober 2007 - 21:41 #11
fantastisk - tusind tak for hjælpen!!!
Jeg bliver nok nødt til at dele pointene mellem jer to... er det ikke mest fair?
Hvis I smider et "svar", så får I point :-)
Avatar billede nielle Nybegynder
23. oktober 2007 - 21:49 #12
Et svar :^)

Du bestemmer 100 % selv hvordan du ønsker at fordele point. :^)
Avatar billede di8leva Nybegynder
24. oktober 2007 - 11:33 #13
Her er fra mig også :) Godt at du fik styr på det
Avatar billede mason Nybegynder
24. oktober 2007 - 12:30 #14
Super, I får 100 point hver, og endnu engang tak for hjælpen! :-)
Avatar billede nielle Nybegynder
24. oktober 2007 - 18:37 #15
Selv tak for point :^)
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