Källkoden för /anders.enges/asp/ex12.asp
<!--#include file="../inc/navstuff.asp" -->
<%  response.Buffer = TRUE %>
<table align="right"><tr><td>
<a href="ex12.asp">Starta om denna sida</a></td></tr></table>
Prova denna form genom att<ol>
<li>Klicka på OK utan att ha fyllt i något av fälten
<li>Klicka på OK med bara namnfältet ifyllt
<li>Klicka på OK med bara adressfältet ifyllt
<li>Klicka på OK med bägge fälten ifyllda
</ol>
Håll ett öga på adressraden när du provar ovanstående tester<p>


<%
Function notOK(text)
      If text & "" = "" Then
           notOK = true
      Elseif instr(text, ">") or instr(text, "<") Or instr(text, "|") Then
           notOK = true
      Else
           notOK = false
      End If
End Function

If Request("SEND") & "" <> "" Then
      If notOK(Request("MittNamn")) OR notOK(Request("MinAdress")) Then %>

      <br><font color="#FF0000" size="+1">Du måste fylla i alla fälten</FONT>
      <% 
      Else
           namn = Server.URLEncode(Request("MittNamn"))
           adress = Server.URLEncode(Request("MinAdress"))
           Response.redirect "svaret.asp?Namn=" & namn & "&Adress=" & adress
      End If
End If
%>

<FORM METHOD='GET'>
   <TABLE BORDER="0">
  <tr>
   <td>
   Namn:
   </td>
   <td>
   <INPUT TYPE="TEXT" NAME="MittNamn" SIZE="20" MAXLENGTH="30" VALUE="<%  =Request("MittNamn") %>">
   <%if notOK(Request("MittNamn")) Then %>
   <font color="#FF0000">Fyll i</FONT>
   <%   End If %>
   </td>
   </tr>
   <tr>
   <td>
   Adress:
   </td>
   <td>
   <INPUT TYPE="TEXT" NAME="MinAdress" SIZE="20" MAXLENGTH="30" VALUE="<%  =Request("MinAdress") %>">
   <%if notOK(Request("MinAdress")) Then %>
   <font color="#FF0000">Fyll i</FONT>
   <%   End If %>

   </td>
   </tr>
   <tr>
   <td>
    
   </td>
   <td>
   <INPUT name="SEND" TYPE="SUBMIT" VALUE="OK">
   <INPUT TYPE="RESET" VALUE="Töm">
   </td>
   </tr>
   </table>
</form>
<p>
Koden som validerar indatat, och viderehänvisar till en annan sida om vi har fyllt i bägge fälten:<br>
<div class=code>
<span class=asp><%<br>
Function notOK(text)<br>
    ' får inte vara tomt<br>
    If text & "" = "" Then<br>
        notOK = true<br>
    ' man kan även kontollera om det fanns ogiltiga tecken <br>
    Elseif instr(text, ">") or instr(text, "<") Or instr(text, "|") Then<br>
        notOK = true<br>
    Else<br>
        notOK = false<br>
    End If<br>
End Function<br>
<br>
' <i>SEND är namet på Submit knappen.</i> <br>
If Request("SEND") & "" <> "" Then <br>
    ' <i>Om det vi gav in inte är OK (t.ex tomt)</i><br>
    If notOK(Request("MittNamn")) OR notOK(Request("MinAdress")) Then %></span><br>
        <br><font color="#FF0000" size="+1">Du måste fylla i alla fälten</FONT><br>
<span class=asp><% <br>
    Else <br>
        ' <i>Vi har giltigt data</i><br>
        ' <i>måste se till att det går att sända vidare genom att koda det för URL bruk</i><br>
        namn = Server.URLEncode(Request("MittNamn"))<br>
        adress = Server.URLEncode(Request("MinAdress"))<br><br>
        ' <i>dirigera om till en ny sida med värdena som parametrar</i><br>
        ' <i>Måste vara <% response.Buffer = TRUE %> i början av sidan</i><br>
        Response.redirect "svaret.asp?Namn=" & namn & "&Adress=" & adress<br>
    End If<br>
End If<br>
%></span><br>
<br>
<FONT COLOR=#006400><!-- Formens kod (lite förenklad) --><br></font>
<FORM METHOD='GET'><br>
    Namn:<br>
    <INPUT TYPE="TEXT" <br>
            NAME="<b>MittNamn</b>" <br>
            SIZE="20" <br>
            MAXLENGTH="30" <br>
            VALUE="<span class=asp><% =Request("MittNamn") %></span>"><br>
            <span class=asp><%if notOK(Request("MittNamn")) Then %></span><br>
            <font color="#FF0000">Fyll i</FONT><br>
            <span class=asp><% End If %></span><br>
<br><br>
    Adress:<br>
    <INPUT TYPE="TEXT" <br>
            NAME="<b>MinAdress</b>" <br>
            SIZE="20" <br>
            MAXLENGTH="30" <br>
            VALUE="<span class=asp><% =Request("MinAdress") %></span>"><br>
            <span class=asp><%if notOK(Request("MinAdress")) Then %></span><br>
            <font color="#FF0000">Fyll i</FONT><br>
            <span class=asp><% End If %></span><br>
<br><br>
    <INPUT name="<b>SEND</b>" TYPE="SUBMIT" VALUE="OK"><br><br>
    <INPUT TYPE="RESET" VALUE="Töm"><br>
</FORM><br>
</div><p>
Denna validering fungerar på följande sätt:<ul>
<li>När vi kommer till sidan så finns det inga parametrar på adressraden utan den är bara
ex12.asp. <br>Detta gör att <b>SEND</b> parametern kommer att vara tom och
<span class=asp>If Request("SEND") & "" <> "" Then </span> kommer att ge
<b>false</b> som resultat.
<li>När vi sedan klicka på OK så kommer <b>SEND</b> att ha ett värde (vilket är i detta fall oväsentligt) och <span class=asp>If</span> satsen kommer att ge <b>true</b> som reslultat
<ul>
<li>Vi kontollerar då om datat är korrekt med en egen funktion (som skulle kunna
sättas i en separat fil och inkluderas)
<li>Om det inte är korrekt så skriver vi ut ett felmeddelande
<li>Är allt OK så konverterar vi värdena till URL kompatibla strängar med
<span class=asp>Server.URLEncode</span> och
sänder iväg datat via adressraden till en annan sida
</ul>
<li>När formen laddas så sätts eventuella värden som fanns på adressraden in i rätt fält<br>
Se t.ex. raden VALUE="<span class=asp><% =Request("MittNamn") %></span>"
<ul>
<li>Om dett inte finns någon namn så blir det tomt
<li>Om det fanns ett namn så skrivs det in i VALUE egenskapen. Detta görs för
att vi inte vill att användaren skall behöva skriva om allt, utan bara det som var fel eller tomt
</ul>
</ul>
<p>
<!--#include file="../inc/footer.asp" -->