21. marts 2004 - 21:50Der er
34 kommentarer og 1 løsning
Formular afsendes kun hvis den bliver submittet fra bestemt side.
Jeg har en side "formular-sendt.asp", som behandler en kontaktformular fra "formular.html". Nu er det sådan, at jeg kun vil have, at "formular-sendt.asp" skal afsende e-mailen, hvis man rent faktisk har udfyldt formularen. En bruger skal altså dirigeres videre til en fejlside hvis ikke han er kommet ind på siden via "formular.html". Hvordan gør jeg dette.
Det skal siges, at jeg bestemt ikke er nogen ørn til ASP, hvorfor jeg gerne vil bede om et evt. fyldestgørende svar!
skg: Tusinde tak for hjælpen - det virker perfekt :-)
smid lige et svar!
Synes godt om
Slettet bruger
21. marts 2004 - 22:06#5
ahh.. fik ikke lige overskriften med.. DOH!!... men tror at macho vil gøre, så der ikke bliver sendt nogen mail, hvis man bare browser til siden uden at have udfyldt formen..
skg: Jeg var lidt for hurtig før. Det virker IKKE perfekt. Nu får jeg ganske vist fejl-siden frem, men det gør jeg desværre også selvom formularen bliver korretkt udfyldt fra den rigtige .html side.
If Not Request.ServerVariables("HTTP_REFERER") = "kontakt-formular.html" Then Response.Redirect( "fejl.html" ) Response.End End If
men som sagt, så bliver man ført videre til "fejl.html" uanset man kommer fra "kontakt-formular.html" ?
Synes godt om
Slettet bruger
21. marts 2004 - 22:12#9
det du skal have er ikke noget, der tjekker, om man kommer fra den rigtige side (hvis jeg forstår dig ret).. det du vil have er, at formen bliver validere... der kan være, at feltet skal indeholde kun tal, eller have en bestemt længde.. kan du ikke skrive et eksempel, så det er nemmere at forstå??
kvadratrodenaf1: Nej, jeg kan sagtens lave en simpel validering af indholdet fra felterne af form-mailen. Så jo, man SKAL komme fra en bestemt side, før mailen bliver sendt afsted - det er det, der er meningen med mit spørgsmål!
mvh
Synes godt om
Slettet bruger
21. marts 2004 - 22:17#13
fair nok.. så skal jeg ikke komme med flere dumme svar i denne tråd :D..
og prøv allerførst at checke om Request.ServerVariables("HTTP_REFERER") overhovedet er sat til noget - der er nogle browsere der ikke sender den med desværre...
skg: Jeg må jo hellere lige understrege at jeg ikke er nogen ørn til asp (helt ny), derfor ved jeg ikke lige hvordan jeg skal bruge dit svar! Hvad mener du med "LCase()"? Men jeg kan da fortælle, at jeg tester på MS IE6, og den sender vel http_referer med?
check.asp: --- <% If Not LCase( Request.ServerVariables( "HTTP_REFERER" ) )= LCase( "http://localhost/_MiscTestFolder/RefCheck/page.htm" ) Then Response.Redirect( "page.htm?fejl=1" ) Response.End End IF %> <html> <body> Den er fin : <% = Request.ServerVariables( "HTTP_REFERER" ) %> <p><a href="page.htm">back</a> </body> </html> ---
Et eller andet sted må det så nok være på serveren (Cliche) den er gal. Jeg har prøvet lige nøjagtig sådan som du gør i dit eksempel, men desværre stadig uden held. Jeg får stadig heller ikke noget frem på siden, hvis jeg skriver dette: <html> <body> Den er fin : <% = Request.ServerVariables( "HTTP_REFERER" ) %> <p><a href="page.htm">back</a> </body> </html>
På din formular side ( som du laver om til en ASP side ), sætter du en Session variabel, f.eks:
<% Session("CanSendFormular") = True %>
I stedet for at checke Request.ServerVariables( "HTTP_REFERER" ) checker du Session("CanSendFormular") - både om den er sat, og om den er sand :
If IsEmpty( Session("CanSendFormular") ) Or Session("CanSendFormular") <> True ) Then Response.Redirect( "fejl.html" ) Response.End Else ' Husk at slette Session variablen ' så man ikke kan reloade siden Session("CanSendFormular") = False End If
ps. Det er dælme ved at være længe siden jeg har rodet med VBScript :-P
der mangler en ( et sted, men det finder du jo nok ud af :-)
Synes godt om
Slettet bruger
22. marts 2004 - 16:30#28
skg>> så er der det problem, at man kan gå ind på siden og få oprettet sessionnen, for så bagefter at gå ind på en form, man selv har lavet på sin egen computer, og så sende indhold fra den side..
formular.asp --> opretter session --> egen side, som ligger lokalt på end egen computeren --> submit til kontakt-formular.asp --> godkendelse pga. tidligere oprettet session.
Hvis man skal beskytte sig 112%, med den gode værkstedshumor, så skal man jo lave et kæmpe system som holder styr på hvor alle requests kommer fra, og checke om de kommer de rigtige steder fra osv osv osv.
Så længe man validerer sit input sker der jo ikke så store fejl ?!?!
Synes godt om
Slettet bruger
22. marts 2004 - 16:48#30
nej.. mener jeg heller ikke.. hvis det ikke er for svært at forklare, ville det da være spændende at høre, hvad det skal bruges til..
Jeg kan skam godt forklare, hvorfor jeg ønsker en sådan funktion: Såsnart man kommer ind på denne ASP-side, hvor formularen bliver behandlet, vil der blive afsendt en e-mail, uanset der er indtastet noget fra formularen eller ej. Hvis nu ASP-siden bliver fanget af en søgemaskine og man klikker ind på den, vil der altså blive afsendt en tom e-mail, hvilket jeg bestemt ikke ønsker! Desværre kan jeg stadig ikke få noget af det til at virke, hverken HTTP_REFERER eller "Session". :-(
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.