Avatar billede leif Seniormester
03. juli 2005 - 17:18 Der er 14 kommentarer og
1 løsning

valider email

Hej,

Jeg vil skyde på jeg kan bruge noget javascript.

Jeg skal validere om en email er skrevet i feltet samt at opbygningen af den er mulig ! dvs. der er kun 1 @ samt minimum 1 . samt at den som mimum er udformet tekst@tekst.tld

Er der en som tilfældigvis ligger inde med sådan en kode ?

Fra
Leif
Avatar billede roenving Novice
03. juli 2005 - 17:25 #1
-- Nu er det sådan, at det, som er foran @-tegnet, _ikke_ på nogen måde må fortolkes af en smtp-node, bortset fra selve hosten, hvilket betyder, at det er noget vrøvl at teste det !-)

-- men f.eks.

  var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
  var regexp = new RegExp("^.*?@["+t+"]["+t+"\\.\\-]*\\.[a-z]{2,6}$","i");
  tekst=f.mail.value.toLowerCase();
  if (!regexp.test(tekst)||tekst.match(/\.\.|\.@|-@|--/)){
      alert ("Der skal stå en gyldig e-mail adresse i tekst feltet");
      f.mail.focus();
      return false;
  }
Avatar billede leif Seniormester
03. juli 2005 - 17:32 #2
Det er kun for at undgå at folk kun skriver minadresse !
Avatar billede roenving Novice
03. juli 2005 - 17:46 #3
Ovennævnte tester, at der er et @ derefter følger mindst eet bogstav/tal samt måske nogle flere af de lovlige tegn, så et punktum efterfulgt af en kombination af bogstaver, som passer på lovlige top-domæner !-)

-- desuden tester den, at der ikke er to punktummer eller to bindestreger efter hinanden ...
Avatar billede leif Seniormester
03. juli 2005 - 18:31 #4
Hmm, synes jeg kan få den til det !

Hvis min form ser sådan ud:
<form name="form" method="POST" action="index.php?page=kontakt">
<table border="0" width="100%" height="1">
    <tr>
      <td width="25%" height="1">&nbsp;&nbsp;&nbsp;Navn:</td>
      <td width="" height="1"><input type="text" name="navn" size="45" value="<?php echo $_POST["navn"]; ?>"></td>
    </tr>
    <tr>
      <td width="" height="1">&nbsp;&nbsp;&nbsp;E-mail: (udfyldes med lovlig email adresse)</td>
      <td width="" height="1"><input type="text" name="email" size="45" value="<?php echo $_POST["email"]; ?>"></td>
    </tr>
    <tr>
      <td width="" height="110">&nbsp;&nbsp;&nbsp;Spørgsmål:</td>
      <td width="" height="110"><textarea rows="5" name="tekst" cols="35"><?php echo $tekst; ?></textarea></td>
    </tr>
    <tr>
      <td width="" height="1"></td>
      <td width="" height="1"><input type="submit" value="Send" name="B1"><input type="reset" value="Nulstil" name="B2"></td>
    </tr>
  </table>


Hvordan skal den så implementeres ?
Avatar billede leif Seniormester
03. juli 2005 - 18:41 #5
Mig der havde lavet en bommert !

Vil du have point ?
Avatar billede per1291 Nybegynder
03. juli 2005 - 22:06 #6
<?php echo $tekst; ?>
ser forkert ud i forhold til
value="<?php echo $_POST["email"]; ?>".

form name="form" burde erstattes af form name="f".

Jeg tvivler ikke på, at roenvings hieroglyffer virker - men det kræver arbejde at forstå dem.
Avatar billede leif Seniormester
03. juli 2005 - 22:08 #7
per1291 -> Grunden til det første du nævner er fordi der ikke er kodet konsekvens !

Jeg har fået det til at virke !
Avatar billede per1291 Nybegynder
03. juli 2005 - 22:32 #8
Alle tiders. Nu vil jeg sætte mig ind i roenvings løsning. Det virker som magi. Jeg har selv en email-validator på over 100 linjer. - Hilsen Per
Avatar billede per1291 Nybegynder
03. juli 2005 - 23:55 #9
roenving - ja, du har jo løst leif's problem.

Jeg vil bare sige, at det har været en åbenbaring at blive præsenteret for RegExp.

Vha. RegExp må man kunne validere syntaksen af et Javascript eller alt muligt andet.

Min egen email-validator tjekker diverse lovlige extensions - .dk, .info, .com, .net osv. Men hvorfor egentlig? Man kan jo alligevel ikke vha. et syntax-check tjekke om adressen findes.
Avatar billede leif Seniormester
04. juli 2005 - 00:00 #10
per1291 -> Afhængig af formålet, beder jeg faktisk folk om at bekræfte deres adresse ved at sende dem en mail med et unikt ID som du skal gå ind på en defineret side og taste ind.
Avatar billede per1291 Nybegynder
04. juli 2005 - 00:58 #11
leif -> God ide... Og dog, et unikt ID? Ja, det har jeg vist selv været ude for - ved tilmelding til en nyhedsservice eller sådan. - Nå, mit eget projekt er vist mere beskedent. Hvis folk indtaster en email-adresse på min side, og de derefter kan svare på en mail som jeg har sendt til samme adresse - ja så må de være seriøse nok. I grunden giver det vel NÆSTEN den samme sikkerhed. Hilsen Per
Avatar billede leif Seniormester
04. juli 2005 - 10:23 #12
per1291 -> Ja, det er stort set det samme, men jag kan jo sagtens fake en afsender adresse ! Så derfor unikt ID (Så er jeg også sikker på at de har læst emailen)! Jeg har primært brugt det i situationer hvor at det har været vigtigt at den email adresse har virket på det tidspunkt fx. hvis der har været fakturaer inde i billedet.
Avatar billede roenving Novice
04. juli 2005 - 10:50 #13
-- og så måtte jeg jo lige sørge for, at der var vægt bag argumentet om at det, som er foran @-tegnet, ikke må testes ...

-- kig i sektion 2.3.10 i rfc 2821: http://www.faqs.org/rfcs/rfc2821.html

Consequently, and due to a long history of problems when intermediate hosts have attempted to optimize transport by modifying them, the local-part MUST be interpreted and assigned semantics only by the host specified in the domain part of the address.

-- og velbekomme '-)
Avatar billede leif Seniormester
04. juli 2005 - 10:53 #14
Det er ikke fordidet skal bruges i den videre forløb af siden, men ren og skær for at sikre at den adresse der står i feltet kan lade sig gøre !
Avatar billede roenving Novice
04. juli 2005 - 11:03 #15
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