Avatar billede holger_f Nybegynder
25. januar 2007 - 21:21 Der er 2 kommentarer

Validering formmail

Hejsa Eksperter

Jeg er begyndt at på spammails via min ganske enkle formmail,
derfor er jeg ved at få lavet lidt javascriptvalidering på siden.

Jeg her 4 felter og der ser ud som om at jeg får valideret de 3 første felter helt fint, det er grundlæggende det samme der valideres for i alle 4 felter - MEN i det sidste felt går det galt og jeg kan simpelt hen ikke finde ud af hvorfor.
Der valideres for mindst 25 karakterer i feltet den del fungerer fint, når jeg så tasker flere end de 25 karakterer validerer jeg for 3 ulovlige karakterer @#& - men den er sgu ligeglad, den fejler hvergang.


Jeg har kodet og checket siden i PSpad.

her er hele siden kode - Please hjælp mig

<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Skriv til mig</title>
<base target="_self">
</head>

<body bgcolor="#BBCED0" >

<p>&nbsp;</p>

<p><font face="Comic Sans MS" size="4">Du kan skrive til mig her</font></p>
<p><font face="Comic Sans MS" size="2">Udfyld alle
felter og tryk send på Send E-mailknappen.</font></p>

<script type Language="JavaScript">
<!--
function Form1_Validator(theForm)
{

  // check to see if the field is blank
  if (theForm.MAIL_Navn.value == "")
  {
    alert("Du skal indtaste Navn.");
    theForm.MAIL_Navn.focus();
    return (false);
  }

  // require at least 5 characters be entered
  if (theForm.MAIL_Navn.value.length < 5)
  {
    alert("Indtast mindst 5 karakterer i  \"Navne\" feltet.");
    theForm.MAIL_Navn.focus();
    return (false);
  }

  // Check for indvalide characters i navn
  var checkStr = theForm.MAIL_Navn.value;
  var allValid = true;
  var invalids = "!@#$%^&*()-~,'<.>/?;:\|"
  for(i=0; i<checkStr.length; i++)
    if(checkStr.indexOf(invalids.charAt(i)) >= 0 )
    {
    alert("Du har indtaste en ulovlig karakter i Navn.  !@#$%^&*()-~,'<.>/?;:\|");
    theForm.MAIL_Navn.focus();
    return (false);
    }

  // check if email field is blank
  if (theForm.MAIL_SENDER.value == "")
  {
  alert("Du skal indtaste email adresse i  \"Email\" feltet.");
  theForm.MAIL_SENDER.focus();
  return (false);
  }

  // test if valid email address, must have @ and .
  var checkEmail = "@.";
  var checkStr = theForm.MAIL_SENDER.value;
  var EmailValid = false;
  var EmailAt = false;
  var EmailPeriod = false;
  for (i = 0;  i < checkStr.length;  i++)
  {
  ch = checkStr.charAt(i);
  for (j = 0;  j < checkEmail.length;  j++)
    {
    if (ch == checkEmail.charAt(j) && ch == "@")
    EmailAt = true;
    if (ch == checkEmail.charAt(j) && ch == ".")
    EmailPeriod = true;
      if (EmailAt && EmailPeriod)
        break;
      if (j == checkEmail.length)
        break;
      }
      // if both the @ and . were in the string
    if (EmailAt && EmailPeriod)
    {
        EmailValid = true
        break;
      }
  }
  if (!EmailValid)
  {
  alert("Feltet \"email\" skal indeholde både \"@\" og \".\".");
  theForm.MAIL_SENDER.focus();
  return (false);
  }

  // check to see if the field is blank
  if (theForm.MAIL_Emne.value == "")
  {
    alert("Du skal indtaste Emne i Emne feltet.");
    theForm.MAIL_Emne.focus();
    return (false);
  }

  // Check for indvalide characters i navn
  var checkStr = theForm.MAIL_Emne.value;
  var allValid = true;
  var invalids = "!@#$%^&*()-~,'<.>/?;:\|"
  for(i=0; i<checkStr.length; i++)
    if(checkStr.indexOf(invalids.charAt(i)) >= 0 )
    {
    alert("Du har indtaste en ulovlig karakter i Emne.  !@#$%^&*()-~,'<.>/?;:\|");
    theForm.MAIL_Emne.focus();
    return (false);
    }

  // Check for indvalide characters i tekst
  var checkStr = theForm.MAIL_Tekst.value;
  var allValid = true;
  var invalids = "@#&"
  for(i=0; i<checkStr.length; i++)
    if(checkStr.indexOf(invalids.charAt(i)) >= 0 )
    {
    alert("Du har indtaste en ulovlig karakter i Tekst.  @ # &");
    theForm.MAIL_Tekst.focus();
    return (false);
    }

  // require at least 25 characters be entered
  if (theForm.MAIL_Tekst.value.length < 25)
  {
    alert("Indtast mindst 25 karakterer i  \"Tekst\" feltet.");
    theForm.MAIL_Tekst.focus();
    return (false);
  }


}

//--></script>

<form name="formmail"  action="/cgi-bin/formmail/formmail.cgi" method="post" onsubmit="return Form1_Validator(this)">

<input type=hidden name="subject" value="Post fra skriv til mig">
<input type=hidden name="recipient" value="navn@mailadresse.dk">

<input type=hidden name="required" value="MAIL_Navn,MAIL_SENDER,MAIL_Emne">

  <table border="0" width="100%">
    <tr>
      <td width="10%"><font face="Comic Sans MS" size="2">Navn: </font>
      </td>
      <td width="90%"><font face="Comic Sans MS" size="2"><INPUT TYPE="text" SIZE="50" NAME="MAIL_Navn">
        <font color="#FF0000">(*)</font>
  </font>
      </td>
    </tr>
    <tr>
      <td width="10%"><font face="Comic Sans MS" size="2">
  Email:
  </font>
      </td>
      <td width="90%"><font face="Comic Sans MS" size="2"><INPUT TYPE="text" SIZE="27" NAME="MAIL_SENDER">
        <font color="#FF0000">(*)</font>
  </font>
      </td>
    </tr>
    <tr>
      <td width="10%"><font face="Comic Sans MS" size="2">
  Emne:
  </font>
      </td>
      <td width="90%"><font face="Comic Sans MS" size="2"><INPUT TYPE="text" SIZE="20" NAME="MAIL_Emne">
        <font color="#FF0000">(*)</font>
  </font>
      </td>
    </tr>
    <tr>
      <td width="10%"><font face="Comic Sans MS" size="2">&nbsp;</font></td>
      <td width="90%"></td>
    </tr>
    <tr>
      <td width="10%"><font face="Comic Sans MS" size="2">Tekst:</font></td>
      <td width="90%"><font face="Comic Sans MS" size="2"><TEXTAREA NAME="MAIL_Tekst" ROWS="7" COLS="50"></TEXTAREA></font></td>
    </tr>
    <tr>
      <td width="10%"><font face="Comic Sans MS" size="2">&nbsp;</font></td>
      <td width="90%"><font face="Comic Sans MS" size="2">&nbsp;</font></td>
    </tr>
    <tr>
      <td width="10%"></td>
      <td width="90%"><font face="Comic Sans MS" size="2"><INPUT TYPE="submit" VALUE="Send E-mail">
  </font>
      </td>
    </tr>
  </table>
  <p>
<font face="Comic Sans MS" size="2">
  <BR>
  </font>
  </p>
  </FORM>

<p>&nbsp;</p>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

</body>

</html>
Avatar billede roenving Novice
26. januar 2007 - 04:58 #1
-- prøv at indsætte return true; lige før du afslutter funktionen !-)

-- i øvrigt ville jeg nok selv have gjort ca. sådan:

<script type="text/javascript">
function Form1_Validator(theForm){
  if (!theForm.MAIL_Navn.value.match(/^\w{5}$/) || theForm.MAIL_Navn.value.match(/[!@#$%\^&*()-~,'<.>\/?;:\\|]/)){
    alert("Du skal indtaste Navn på mindst 5 bogstaver ( tegnene !@#$%^&*()-~,'<.>/?;:\| er ulovlige.");
    theForm.MAIL_Navn.focus();
    return false;
  }
  // check if email field is blank
  if (!theForm.MAIL_SENDER.value.match(/^.*@.+\..+/)){
  alert('Du skal indtaste email adresse i "Email" feltet, og det skal indeholde både "@" og ".".');
  theForm.MAIL_SENDER.focus();
  return false;
  }
  // check to see if the field is blank
  if (!theForm.MAIL_Emne.value.match(/^\w{5}$/) || theForm.MAIL_Emne.value.match(/[!@#$%\^&*()-~,'<.>\/?;:\\|]/)){
  {
    alert('Du skal indtaste Emne på mindst 5 karakterer i "Emne" feltet.');
    theForm.MAIL_Emne.focus();
    return false;
  }
  // Check for indvalide characters i tekst
  if (!theForm.MAIL_Tekst.value.match(/^[\w., ]{25}$/) || theForm.MAIL_Tekst.value.match(/[@#$]/)){
    alert('Indtast mindst 25 lovlige karakterer i "Tekst" feltet.');
    theForm.MAIL_Tekst.focus();
    return false;
  }
  return true;
}
</script>
Avatar billede holger_f Nybegynder
26. januar 2007 - 20:40 #2
Hej Roenving

Tak for din indsats, men det hjalp ikke,
jeg tænkte så det måske havde noget med TEXTAREA at gøre da det er det eneste felt af den type, men når jeg ændrer til et almindeligt felt, er resultatet det samme, jeg har nu opgivet denne validering i det sidste felt, og håber så at valideringerne på de øvrige felter gør at jeg slipper for alt det skide SPAM
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