Avatar billede alsingeren Nybegynder
14. oktober 2003 - 23:42 Der er 6 kommentarer og
1 løsning

JMail og "tvungen" udfyldning af felter

Hej, har problem med at få nedenstående JMail form til at virke som jeg gerne vil have den til.
Er der en der kan finde de_vise_sten så brugerne "tvinges" til at udfylde alle felter inden mailen kan afsendes?
Vedhæfter lige koderne.
På forhånd tak.
---
default.asp
----

<center>
<form method="post" action="SendMail.asp">
  <table>
    <tr>
      <td>
<table>
        <tr>
          <td>
<font size="1">
Dit navn:<br>
<input type="text" size="25" name="name"><br>
Din Email:<br>
<input type="text" size="25" name="email"><br>
Din Telefon:<br>
<input type="text" size="25" name="telefon"><br>
Angående:<br>
<input type="text" name="subject" size="40"><br>
Skriv din kommentar her:<br>
<textarea name="body" cols="50" rows="10" wrap="PHYSICAL"></textarea><br>
<input type="submit" value="Send">&nbsp;&nbsp; <input type="reset" value="Nulstil" name="B1"></font>
          </td>
        </tr>
      </table>
      </td>
    </tr>
  </table>
</form>
    </center>


SendMail.asp
----

<%@LANGUAGE = VBSCRIPT%>
<%
Response.Buffer=true
%>
<html>
<body>

<%

' Get the form data
name        = Request.Form("name")
senderEmail = Request.Form("email")
subject    = Request.Form("subject")
recipient  = "mail@DOMÆNE.dk"
body        = Request.Form("body") & vbCrLf & " "& vbCrLf & "Navn: " & request.form("name") & vbCrLf & " "& vbCrLf & "Telefon: " & request.form("telefon") & vbCrLf  & " "& vbCrLf & "E-mail: " & request.form("email") & vbCrLf

' Create the JMail message Object
set msg = Server.CreateOBject( "JMail.Message" )

' Set logging to true to ease any potential debugging
' And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true

' Enter the sender data
msg.FromName = name
msg.From = senderEmail



' Note that as addRecipient is method and not
' a property, we do not use an equals ( = ) sign
msg.AddRecipient recipient

' The subject of the message
msg.Subject = subject

' And the body
msg.body = body

' Now send the message, using the indicated mailserver
if not msg.Send("mail.DOMÆNE.dk" ) then
    Response.write "<h2>UPS!</h2><h3>Du fik vist ikke udfyldt alle felterne - <a href='java script:history.back(-1)'>KLIK HER</a> og undersøg hvor fejlen kan ligge..."
'    Response.write "<pre>" & msg.log & "</pre>"
else
    Response.Redirect("tak.asp")
    end if


' And we're done! the message has been sent.


%>
</body>
</html>
Avatar billede thesurfer Nybegynder
15. oktober 2003 - 00:14 #1
her er et eksempel der virker:

<% option explicit %>
<form name="formnavn" action="index.asp" method="post">
<input type="text" name="felt1" value="">
<input type="text" name="felt2" value="">
<input type="text" name="felt3" value="">
<input type="text" name="felt4" value="">
<input type="text" name="felt5" value="">
<input type="submit" value="submit">
</form>

<%
dim Ok
dim item
OK = true
for each item in request.form
    if request.form(item) = "" then OK = false
next

if OK = false then response.write "udfyld ALLE felter"
%>
Avatar billede thesurfer Nybegynder
15. oktober 2003 - 00:16 #2
if OK = false then
  response.write "Udfyld ALLE felter!"
  ' vis formen med samme indhold som før.. eksempel:
%>

<input type="text" size="25" name="email" value="<%=request.form("email")%>"><br>

<%
else
  ' send mail
end if
Avatar billede alsingeren Nybegynder
15. oktober 2003 - 19:23 #3
Hej thesurfer.
Jeg er ingen haj til asp, har dog prøvet mig frem med din koder, desværre uden held.
I den "originale" kode sker der det at hvis man ikke udfylder noget og trykker på send, så virker redirect fint (tak.asp - dog uden jeg modtager en mail) Hvis man f.eks skriver cc i alle felter, da går den videre til: Response.write "<h2>UPS!</h2><h3>Du fik vist ikke udfyldt alle felterne, slutligen hvis jeg så ændrer cc i email feltet til et gyldig emailadresse, da modtager jeg mailen.
Hilsen Carsten
Avatar billede thesurfer Nybegynder
16. oktober 2003 - 15:50 #4
Jeg har startet om, og lavet alt det du skal bruge i 1 fil..
du skal selvfølge fil også bruge din "tak.asp"..

jeg har prøvet script og det virker.. dog har jeg ikke prøvet med din JMail script indbygget.. dvs, er der fejl, så er det sikkert mail-scriptet der er noget galt med..

jeg har brugt Option Explicit, så du *SKAL* definere de variabler der bliver bryut.. hvis du ikke gør det, vil du få en fejlmelding.. man bruger det så man undgår stavefejl..

jeg har skrevet kommentarer til de linierne så du kan finde ud af hvordan de virker..

- håber du kan bruge det.

/theSurfer.




<%
option explicit ' tving programmøren til at definere variablerne for at undgå stavefejl o.lign..
response.buffer = true ' hele siden dannes før den sendes til brugeren

%>
<html>
<head>
<style type="text/css">
/* ved at bruge css, undgår du at skulle skriv <font...> hver gang */
body, td    {
            font-family: tahoma;
            font-size: 10px;
            }
   
</style>
</head>
<body>
<%
if lcase(request.form("mode")) = "send" then ' hvis brugeren har trykker på Submit, udføres denne kode:
    dim OK, item
      OK = True ' vores CheckPoint

      ' vi looper igennem alle felterne for at se om der er nogen der er tomme:
      for each item in request.form

      ' feltet "mode" der indholder "send" skal ikke tælles med:
      if lcase(request.form(item)) <> "send" then
        ' hvis det nuværende felt er tomt, sættes OK til False / falsk
        if request.form(item) = "" then OK = false
      end if
      next ' loop videre til den næste

    ' hvis der står noget i alle felterne, udføres denne kode:
    if OK = true then



''''''''''''' din mail kode starter her '''''''''''''

dim name, senderEmail, subject, recipient, body, msg

' Get the form data
name        = Request.Form("name")
senderEmail = Request.Form("email")
subject    = Request.Form("subject")
recipient  = "mail@DOMÆNE.dk"
body        = Request.Form("body") & vbCrLf & " "& vbCrLf & "Navn: " & request.form("name") & vbCrLf & " "& vbCrLf & "Telefon: " & request.form("telefon") & vbCrLf  & " "& vbCrLf & "E-mail: " & request.form("email") & vbCrLf

' Create the JMail message Object
set msg = Server.CreateOBject( "JMail.Message" )

' Set logging to true to ease any potential debugging
' And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true

' Enter the sender data
msg.FromName = name
msg.From = senderEmail



' Note that as addRecipient is method and not
' a property, we do not use an equals ( = ) sign
msg.AddRecipient recipient

' The subject of the message
msg.Subject = subject

' And the body
msg.body = body

' Now send the message, using the indicated mailserver
if not msg.Send("mail.DOMÆNE.dk" ) then
    Response.write "<h2>UPS!</h2><h3>Du fik vist ikke udfyldt alle felterne - <a href='java script:history.back(-1)'>KLIK HER</a> og undersøg hvor fejlen kan ligge..."
'    Response.write "<pre>" & msg.log & "</pre>"
else
    Response.Redirect("tak.asp")
    end if


' And we're done! the message has been sent.

''''''''''''' din mail kode slutter her '''''''''''''


    else ' en eller flere felter var tomme:
        ' definere vores variabler:
        dim StyleST ' StyleStarT, starter et font-tag der gør farven rød
        dim StyleSP ' StyleStoP, slutter font-tagget så det ikke er hele teksten der bliver rød
        dim strFejlTegn ' jeg har brugt en "*", ses af brugereren ved manglede indtastning
        dim strVisFejl ' kombination af FontStart + FejlTegn + FontSlut
        dim strVisInfo ' Fortæller brugeren hvad "*" betyder
        dim strName, strEmail, strTelefon, strSubject, strBody ' variabler til indhold af felter
        dim strFejlName, strFejlEmail, strFejlTelefon, strFejlSubject, strFejlBody ' sætter "*" ved manglende felter

        StyleST = "<font color='#FF0000'>" ' her justere du din style/layout
        strFejlTegn = "*" ' det tegn brugeren skal se ud for manglende felter
        StyleSP = "</font>"
        strVisFejl = StyleST & strFejlTegn & StyleSP
        strVisInfo = StyleST & "* Skal udfyldes" & StyleSP

        strName = request.form("name") ' henter det der står i feltet "name" og putter det i "strName"
        strEmail = request.form("email") ' det samme med andre værdier..
        strTelefon = request.form("telefon")
        strSubject = request.form("subject")
        strBody = request.form("body")

        if request.form("name") = "" then strFejlName = strVisFejl ' hvis feltet er tomt, sæt en "*"..
        if request.form("email") = "" then strFejlEmail = strVisFejl
        if request.form("telefon") = "" then strFejlTelefon = strVisFejl
        if request.form("subject") = "" then strFejlSubject = strVisFejl
        if request.form("body") = "" then strFejlBody = strVisFejl
    end if
end if
%>

<center>
<form name="FormMail" method="post" action="SendMail.asp" onSubmit="document.FormMail.mode.value='send';">
  <table>
    <tr>
      <td>
<table>
        <tr>
          <td>
Dit navn:<%=strFejlName ' udskriv "*" så brugeren kan se hvor der er fejl%><br>
<input type="text" size="25" name="name" value="<%=strName ' udskriv værdien af feltet før submitten%>"><br>
Din Email:<%=strFejlEmail%><br>
<input type="text" size="25" name="email" value="<%=strEmail%>"><br>
Din Telefon:<%=strFejlTelefon%><br>
<input type="text" size="25" name="telefon" value="<%=strTelefon%>"><br>
Angående:<%=strFejlSubject%><br>
<input type="text" name="subject" size="40" value="<%=strSubject%>"><br>
Skriv din kommentar her:<%=strFejlBody%><br>
<textarea name="body" cols="50" rows="10" wrap="PHYSICAL"><%=strBody%></textarea><br>
<input type="submit" value="Send">&nbsp;&nbsp; <input type="reset" value="Nulstil" name="B1">
<input type="hidden" name="mode">
          </td>
        </tr>
      </table>
      </td>
    </tr>
  </table>
</form>
<%=strVisInfo ' Hvis der er fejl, hvis en forklaring på "*"%>
    </center>
</body>
</html>
Avatar billede thesurfer Nybegynder
16. oktober 2003 - 15:52 #5
der er nogle stavefejl i min kommentar.. men scriptet virker :)
Avatar billede alsingeren Nybegynder
16. oktober 2003 - 21:31 #6
Jeg takker mange gange for hjælpen :o)
/Carsten
Avatar billede thesurfer Nybegynder
17. oktober 2003 - 16:04 #7
Takker for points.
Held og lykke.
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
Kurser inden for grundlæggende programmering

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