Avatar billede minus Nybegynder
30. maj 2008 - 11:32 Der er 10 kommentarer

Implementere mailvalidator i koden

Hej,

Søger nogen, som kan implementere en mailvalidator i min kode. Det som der sker nu, er at den tjekker samtlige felter ens, om de er tomme, hvorefter den giver en alert.

Men vil gerne have at mail-feltet tjekkes i form af en validerbar mail, altså der skal indtastes en gyldig email før der sendes noget.

----------
kontakt.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kontakt</title>
<link href="kontakt.css" rel="stylesheet" type="text/css" />

</head>

<body>

<script language="JavaScript">

function formCheck(formobj){
    // Enter name of mandatory fields
    var fieldRequired = Array("navn", "email", "emne", "besked");
    // Enter field description to appear in the dialog box
    var fieldDescription = Array("Navn", "Email", "Emne", "Besked");
    // dialog message
    var alertMsg = "Udfyld venligst de manglende fælter:\n";
   
    var l_Msg = alertMsg.length;
   
    for (var i = 0; i < fieldRequired.length; i++){
        var obj = formobj.elements[fieldRequired[i]];
        if (obj){
            switch(obj.type){
            case "select-one":
                if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            case "select-multiple":
                if (obj.selectedIndex == -1){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            case "text":
            case "textarea":
                if (obj.value == "" || obj.value == null){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
                break;
            default:
            }
            if (obj.type == undefined){
                var blnchecked = false;
                for (var j = 0; j < obj.length; j++){
                    if (obj[j].checked){
                        blnchecked = true;
                    }
                }
                if (!blnchecked){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
            }
        }
    }

    if (alertMsg.length == l_Msg){
        return true;
    }else{
        alert(alertMsg);
        return false;
    }
}

</script>




<form action="Mailform.php" onsubmit="return formCheck(this);" method="post">
<div id="kontakt">
<div id="kontakttekst">Navn: </div>
<div id="kontaktbox">
    <input type=text name="navn" size="25" />
    </div>
    </div>
    <br />
    <br />

<div id="kontakt">
<div id="kontakttekst">Email: </div>
<div id="kontaktbox">
    <input type=text name="email" size="25" />
    </div>
    </div>
    <br />
    <br />

<div id="kontakt">
<div id="kontakttekst">Emne: </div>
<div id="kontaktbox">
    <input type=text name="emne" size="25" />
    </div>
    </div>
    <br />
    <br />
   
<div id="kontakt">
<div id="kontakttekst">Besked: </div>
<div id="kontaktbox">
<textarea name="besked" rows="8" cols="40" ></textarea>
</div>
</div>

    <br />
   
   
      <div id="kontakt">
    <div id="kontakttekst"></div>
    <div id="kontaktbox"><br />
    <input type=submit value="Submit Form" />
    </div>
    </div>
</form>






</body>
</html>

--------------

Jeg har selv et stykke kode, som gerne skulle tjekke mail om den kan valideres:

if(form1.mail.value==""||form1.mail.value==null){
alert("Du skal skrive din mail");
return false;
}


        var themail=minformular.mail.value;
        //alert(themail);
        var snabela=themail.indexOf("@",1);
        //alert(snabela);
        var dot=themail.indexOf(".",snabela+2);
        //alert(dot);
        /*if(themail.length<6){alert("mail for kort");
        return false;}*/
        if(snabela>0 && dot>0 && themail.length>dot+2){
            return true;}
            else{
            alert("Din emailadresse har forkert format");
            return false;
            }

------------

Hvis der er nogen der kan implementere koden ind i kontakt.php ville det være virkelig fedt. Den må meget gerne give alert i samme box med de andre.

Spørg gerne, hvis jeg har formuleret mig utydeligt :)

Takker på forhån :)
Avatar billede majbom Novice
30. maj 2008 - 11:59 #1
er det bare mig eller validerer din kode en mail som "mail@e.dk" ugyldig?

lige sakset ud af min egen kode:

if(email.value == ""){
  errStr += "- Email (kontakt) - feltet er tomt\n";
}else{
  var emailFilter=/^.+@.+\..{2,3}$/;
  if (!(emailFilter.test(email))) {
      errStr += "- Email (kontakt) - adressen er ikke gyldig";
  }
}
Avatar billede minus Nybegynder
30. maj 2008 - 12:05 #2
splazz -> Nej, den vurder at der skal minimum være et tegn foran snabelA og et bagefter, efterfulgt af minimum 2 tegn. Altså den vurderer em@il.dk fint.

den kode du giver, hvordan kan jeg implementere den i kontakt.php?
Avatar billede minus Nybegynder
30. maj 2008 - 13:15 #3
Forsøgte at sætte din kode ind efter dette, men det virkede ikke :( Den ignorerede koden bare.

              if (!blnchecked){
                    alertMsg += " - " + fieldDescription[i] + "\n";
                }
Avatar billede roenving Novice
30. maj 2008 - 17:07 #4
>>splazz

-- hvad så hvis man har til email på tld'en .museum ?-)

-- ifølge gældende standard for smtp (rfc 2821 punkt 3.5 såvidt jeg husker !-), må ingen anden end hjemserveren validere på nogetsomhelst, der står foran at-tegnet, hvorfor der i virkeligheden slet ikke behøver at stå noget der !o]

Derfor bør en validering kun gå på, om @-tegnet er med, at der er tegn imellem det og et sidste punktum, samt at der er mellem 2 og 6 engelske bogstaver i tld'en:

  var emailFilter=/^.*@.+\.[a-z]{2,6}$/;
Avatar billede minus Nybegynder
30. maj 2008 - 20:22 #5
hjælp søges stadig
Avatar billede majbom Novice
01. juni 2008 - 18:52 #6
jeg har været på weekend-ferie, og har derfor ikke været online siden fredag :O

-> roenving - jeg var ikke klar over at der kunne være 6 karakterer i et tld. mht rfc 2821 p3.5 - vil det så sige at det er helt op til den enkelte mailserver at bestemme hvad der må stå foran @'et?

-> minus - prøv at ret:

case "text":
case "textarea":
  if (obj.value == "" || obj.value == null){
      alertMsg += " - " + fieldDescription[i] + "\n";
  }
  break;

til:

case "text":
case "textarea":
  if (obj.value == "" || obj.value == null){
      alertMsg += " - " + fieldDescription[i] + "\n";
  }else if(fieldRequired[i] == "email"){
      var emailFilter=/^.*@.+\.[a-z]{2,6}$/;
      if (!(emailFilter.test(email))) {
        alertMsg += " - " + fieldDescription[i] + "\n";
      }
  }
  break;
Avatar billede roenving Novice
02. juni 2008 - 13:14 #7
Jepz, og serveren bestemmer selv, hvad den accepterer (herunder ingenting eller ellers ulovlige tegn !-)
Avatar billede roenving Novice
02. juni 2008 - 13:15 #8
(hvilket selvfølgelig kan give problemer med nogle gateways, der ikke er i stand til at videresende visse tegn uden modifikation !-)
Avatar billede majbom Novice
09. juni 2008 - 08:08 #9
minus?
Avatar billede majbom Novice
04. november 2010 - 10:37 #10
kan vi lukke hér?
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