Problemer med validering af mails med tal (PHP formmail)
Hej Eksperter,Har lånt Morten Barklunds udemærkede PHP formmail script til min kontaktformular på mit site - men den tillader ikke e-mails med tal foran @ !! Eks. 123@hotmail.com osv.
Er der nogen der ud fra scriptet nedenfor kan se hvad der skal ændres?
Scriptet ser således ud:
// checker om e-mail formatet er korrekt
// credit: Morten Barklund
function checkEmail(e) {
var legalChars = "abcdefghijklmnopqrstuvwxyzæøå";
var afterChars = legalChars+"0123456789-_";
var beforeChars = afterChars+"%#";
var pos = 0;
var count;
var start;
e = e.toLowerCase();
var lastDot = e.lastIndexOf(".");
lastDot = lastDot == -1 ? e.length-1 : lastDot;
while (pos<lastDot && e.charAt(pos) != "@") {
if (pos != 0 && e.charAt(pos++) != ".") {
return false;
}
if (legalChars.indexOf(e.charAt(pos++)) == -1) {
return false;
}
while (pos<lastDot && beforeChars.indexOf(e.charAt(pos)) != -1) {
pos++;
}
}
if (pos == 0 || e.charAt(pos++) != "@") {
return false;
}
start = pos;
while (pos != lastDot) {
if (pos != start && e.charAt(pos++) != ".") {
return false;
}
if (legalChars.indexOf(e.charAt(pos++)) == -1) {
return false;
}
while (pos != lastDot && afterChars.indexOf(e.charAt(pos)) != -1) {
pos++;
}
}
pos++;
for (count=0; pos<e.length && legalChars.indexOf(e.charAt(pos)) != -1 && count<=6; count++) {
pos++;
}
return pos == e.length && count>=2;
}
// chekcer om alle formfelter er udfyldt korrekt
validateForm = function () {
// er navnet udfyldt
if (!navn_txt.length) {
error_txt.text = "Udfyld venligst dit navn";
return false;
}
// er e-mailen udfyldt
if (!email_txt.length) {
error_txt.text = "Udfyld venligst din e-mail";
return false;
}
// er e-mail formatet korrekt
if (!checkEmail(email_txt.text)) {
error_txt.text = "Der er en fejl i din e-mail";
return false;
}
// er kommentaren udfyldt
if (!kommentar_txt.length) {
error_txt.text = "Skriv venligst en kommentar";
return false;
}
// det hele er ok
return true;
};
// sender mailen
send_mc.onRelease = function() {
// er formen ok så send mailen
if (validateForm()) {
error_txt.text = "";
var lv:LoadVars = new LoadVars();
lv.navn = this._parent.navn_txt.text;
lv.email = this._parent.email_txt.text;
lv.kommentar = this._parent.kommentar_txt.text;
lv.sendAndLoad("sendmail.php", lv, "POST");
//nulstil input felterne
this._parent.navn_txt.text = "";
this._parent.email_txt.text = "";
this._parent.kommentar_txt.text = "";
//skriv besked til brugeren
error_txt.text = "Din besked er sendt.";
}
};
