13. oktober 2002 - 18:28Der er
35 kommentarer og 1 løsning
Sammenfletning af mailform og handler
Kan man sammenskrive denne mailformular og dens mailhandler til én og samme fil? Og på den måde undgå at mailformularen 'linker' til siden mailhandler.asp ved submit?
Og vil valideringschecket stadig kunne fungerer på denne måde?
Der skal nemlig ingen anden side vises ved submit, men blot refreshes efter mailen er afsendt (submit) og så igen vises siden hvorpå mailformularen befinder sig, klar til at afsende én ny mail.
'Tjekker om der er indhold i formularens felter IF Sendername = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Senderemail = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Instr(1, Senderemail, "@") = 0 THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Subject = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Body = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Trim(Body) = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "mail.theselfimages.com" JMail.Sendername = Sendername JMail.Sender = Senderemail JMail.Subject = Subject JMail.AddRecipient Recipient JMail.Body = Body JMail.Priority = 3 JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR") JMail.Execute %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
'Tjekker om der er indhold i formularens felter IF Sendername = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Senderemail = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Instr(1, Senderemail, "@") = 0 THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Subject = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Body = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Trim(Body) = "" THEN Response.Redirect "mailformular.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "mail.theselfimages.com" JMail.Sendername = Sendername JMail.Sender = Senderemail JMail.Subject = Subject JMail.AddRecipient Recipient JMail.Body = Body JMail.Priority = 3 JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR") JMail.Execute End If %>
Jeg kører i forvejen noget ASP og DB på den side hvor mailformularen ligger. Skal nestående kode (DIM) derfor også sammenflettes med DIM for selve mailhandleren, eller kan begge ligge på samme side uden at konflikte med hinanden?
<%Option Explicit%> <% 'Declare variables (for speed) Dim i, language, page, category, altLanguage, altImage, altTsi, altShowroom, altContact, altBack, altFront, altPrint, altName, altEmail, altSubject, altMessage Dim Conn, rs, DSN, strSQL Dim NewsFound, noNewsString Dim ReadMoreText
'Set session timeout (in minutes) Session.TimeOut = 40
'Get language from querystring (URL) language = lcase(Request.QueryString("language")) page = lcase(Request.QueryString("page")) category = lcase(Request.QueryString("category"))
Hmm.. det skal det nok. Det virker i hvert fald ikke på din måde. Nedenstående er AL den asp kode der i forvejen kører på siden. Mailformularen og mailhandler skal derfor integreres i dette, så jeg stadig undgår at skulle 'linke' til en seperart side for mailhandleren ligger for sig selv.
<%Option Explicit%> <% 'Declare variables (for speed) Dim i, language, page, category, altLanguage, altImage, altTsi, altShowroom, altContact, altBack, altFront, altPrint, altName, altEmail, altSubject, altMessage Dim Conn, rs, DSN, strSQL Dim NewsFound, noNewsString Dim ReadMoreText
'Set session timeout (in minutes) Session.TimeOut = 40
'Get language from querystring (URL) language = lcase(Request.QueryString("language")) page = lcase(Request.QueryString("page")) category = lcase(Request.QueryString("category"))
'Assign values to local variables based on language If language = "uk" Then altLanguage = "Dansk" altImage = "dk" altTsi = "The Self Images" altShowroom = "Showroom" altContact = "Contact" altBack = "Back" altFront = "Front" altPrint = "Print" altName = "Name" altEmail = "Your email address" altSubject = "Subject" altMessage = "Message"
' SQL forespørgsel strSQL = "Select * From PAGE WHERE pageID = " & page & " AND language = '" & language & "' AND categoryID = " & category ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
While Not rs.EOF %>
<!-- Images og andet på venstre del af contact.asp indsættes her --> <%=rs("images")%></td>
<%Option Explicit%> <% 'Declare variables (for speed) Dim i, language, page, category, altLanguage, altImage, altTsi, altShowroom, altContact, altBack, altFront, altPrint, altName, altEmail, altSubject, altMessage Dim Conn, rs, DSN, strSQL Dim NewsFound, noNewsString Dim ReadMoreText
'Set session timeout (in minutes) Session.TimeOut = 40
If Request.QueryString("submit") = "ok" Then 'Get language from querystring (URL) language = lcase(Request.QueryString("language")) page = lcase(Request.QueryString("page")) category = lcase(Request.QueryString("category"))
'Assign values to local variables based on language If language = "uk" Then altLanguage = "Dansk" altImage = "dk" altTsi = "The Self Images" altShowroom = "Showroom" altContact = "Contact" altBack = "Back" altFront = "Front" altPrint = "Print" altName = "Name" altEmail = "Your email address" altSubject = "Subject" altMessage = "Message"
' SQL forespørgsel strSQL = "Select * From PAGE WHERE pageID = " & page & " AND language = '" & language & "' AND categoryID = " & category ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
While Not rs.EOF %>
<!-- Images og andet på venstre del af contact.asp indsættes her --> <%=rs("images")%></td>
Nope.. no go! Den konflikter et eller andet sted med denne linie: <form name="Form" action="<% Response.Write(Request.ServerVariables("SCRIPT_NAME") %>?submit=ok" method="post">
Men det problem er jo først opstået efter jeg har sat dine ændringer ind i koden. Jeg har jo ikke mulighed for at teste om noget virker så længe jeg har den fejl.
' SQL forespørgsel strSQL = "Select * From PAGE WHERE pageID = " & page & " AND language = '" & language & "' AND categoryID = " & category ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
While Not rs.EOF %>
<!-- Images og andet på venstre del af contact.asp indsættes her --> <%=rs("images")%></td>
'Tjekker om der er indhold i formularens felter IF Sendername = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Senderemail = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Instr(1, Senderemail, "@") = 0 THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Subject = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Body = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Trim(Body) = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "mail.theselfimages.com" JMail.Sendername = Sendername JMail.Sender = Senderemail JMail.Subject = Subject JMail.AddRecipient Recipient JMail.Body = Body JMail.Priority = 3 JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR") JMail.Execute End If
'Assign values to local variables based on language If language = "uk" Then altLanguage = "Dansk" altImage = "dk" altTsi = "The Self Images" altShowroom = "Showroom" altContact = "Contact" altBack = "Back" altFront = "Front" altPrint = "Print" altName = "Name" altEmail = "Your email address" altSubject = "Subject" altMessage = "Message"
Der sættes værdier for language, page og categori for siden, men ved submit sker der en konflikt mellem at trække det indtastede i mailformularen videre via mailhandleren og så at returnerer med de rigtige værdier for at vise contact.asp siden igen... (sådan her: http://www.theselfimages.com/contact.asp?language=uk&page=14&category=5) Hvis altså sproget er sat til UK og ikke DK eller omvendet.
Prøv evt. at skifte sprog på DK eller UK knappen i venstre side. Alt dette virker fint, men det er ved selve submit der går noget galdt. Det virker heller ikke som om at validerings checket fungerer korrekt.
Det er fordi du ikek får overført dine parameter efter submit!
Prøv den her:
<%Option Explicit%> <% 'Declare variables (for speed) Dim i, language, page, category, altLanguage, altImage, altTsi, altShowroom, altContact, altBack, altFront, altPrint, altName, altEmail, altSubject, altMessage Dim Conn, rs, DSN, strSQL Dim NewsFound, noNewsString Dim ReadMoreText
'Set session timeout (in minutes) Session.TimeOut = 40
'Get language from querystring (URL) language = lcase(Request.QueryString("language")) page = lcase(Request.QueryString("page")) category = lcase(Request.QueryString("category"))
'Assign values to local variables based on language If language = "uk" Then altLanguage = "Dansk" altImage = "dk" altTsi = "The Self Images" altShowroom = "Showroom" altContact = "Contact" altBack = "Back" altFront = "Front" altPrint = "Print" altName = "Name" altEmail = "Your email address" altSubject = "Subject" altMessage = "Message"
'Tjekker om der er indhold i formularens felter IF Sendername = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Senderemail = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Instr(1, Senderemail, "@") = 0 THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Subject = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Body = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Trim(Body) = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
' SQL forespørgsel strSQL = "Select * From PAGE WHERE pageID = " & page & " AND language = '" & language & "' AND categoryID = " & category ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
While Not rs.EOF %>
<!-- Images og andet på venstre del af contact.asp indsættes her --> <%=rs("images")%></td>
Jamen for fanden da! -du ved vel hvad dine variabler hedder! Det er jo din QueryString og din variabel der skal parses ind der! -jeg aner jo ikke hvad du har kaldt dem!
<%Option Explicit%> <% 'Declare variables (for speed) Dim i, language, page, category, altLanguage, altImage, altTsi, altShowroom, altContact, altBack, altFront, altPrint, altName, altEmail, altSubject, altMessage Dim Conn, rs, DSN, strSQL Dim NewsFound, noNewsString Dim ReadMoreText
'Set session timeout (in minutes) Session.TimeOut = 40
'Get language from querystring (URL) language = lcase(Request.QueryString("language")) page = lcase(Request.QueryString("page")) category = lcase(Request.QueryString("category"))
'Assign values to local variables based on language If language = "uk" Then altLanguage = "Dansk" altImage = "dk" altTsi = "The Self Images" altShowroom = "Showroom" altContact = "Contact" altBack = "Back" altFront = "Front" altPrint = "Print" altName = "Name" altEmail = "Your email address" altSubject = "Subject" altMessage = "Message"
'Tjekker om der er indhold i formularens felter IF Sendername = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Senderemail = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Instr(1, Senderemail, "@") = 0 THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Subject = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Body = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
IF Trim(Body) = "" THEN Response.Redirect "contact.asp?sSender=" & Sendername & "&sMail=" & Senderemail & "&sSubject=" & Subject & "&sBody=" & Body & "" END IF
' SQL forespørgsel strSQL = "Select * From PAGE WHERE pageID = " & page & " AND language = '" & language & "' AND categoryID = " & category ' Udfør forespørgsel (rs indeholder nu resultatet) Set rs = Conn.Execute(strSQL)
While Not rs.EOF %>
<!-- Images og andet på venstre del af contact.asp indsættes her --> <%=rs("images")%></td>
Okayyy! ja.. men den sender bare ingen mail. Jeg modtager i hvert fald ingen.
Kan validerings checket bevarer det tekst der ER indtastet, hvis OK klikkes inden alle felter er udfyldt, i stedet for at slette det? Og så afsende når alle felter er udfyldt. På den måde undgår man jo at skulle starte forfram hvis man kommer til at submidte for tidligt
Jeg fandt en anden lille fejl. Hvis OK klikkes uden noget som helst er indtastet og sproget er sat til DK, så får jeg en fejl. Det gør jeg ikke hvis sprog står til UK
artery_graphics> Lige nu er vi jo LÆNGE uden for det oprindelige spørgsmål! -Det der ikke virker nu er at dine parametere (Fx. Category=12) ikke bliver overført korrekt!
-prøv at leg lidt med det.. Det er så lidt der skal til, men som vi sidder nu så sidder du og spørger og spørger og forventer bare at der kommer et svar for hver gang du lægger en kode! -Det er umuligt for mig at se dine fejl lige nu...
Prøv nu at kig lidt på det selv, det er oxo det du lære mest af!
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.