If Request.Form("epost") = "" then response.redirect "saknas.html"
Det känns dock inte som rätt lösning. Jag skulle uppskatta om jag istället fick chansen att fylla i e-postadressen, inte bli ivälgskickad till något konstigt ställe.
Mvh
21 svar · 1 029 visningar · startad av PLks
Hej jag har gjort en gästbok. Den funkar om eposten angivits..
Men om epost saknas så kommer en sida upp:
Ett problem uppstod med sidan du försöker nå och den kan inte visas.
Skulle behöva Er hjälp med en kodsnutt som säger:
Om eposten inte är i fylld så visa saknas.html
If Request.Form("epost") = "" then response.redirect "saknas.html"
Det känns dock inte som rätt lösning. Jag skulle uppskatta om jag istället fick chansen att fylla i e-postadressen, inte bli ivälgskickad till något konstigt ställe.
Mvh
tack för ditt inlägg
@nders skrev:
Det känns dock inte som rätt lösning. Jag skulle uppskatta om jag istället fick chansen att fylla i e-postadressen, inte bli ivälgskickad till något konstigt ställe
meningen är att på sidan saknas.html skallman få chansen att fylla i...
En fråga till:
På sidan skriv.html har skall anges
<table width="600" border="0">
<tr>
<td>
<form name="skriv" method="post" action="add.asp">
<p><br>
Namn:<br>
<input type="text" name="namn" size="50">
</p>
<p>E-post<br>
<input type="text" name="mail" size="50">
</p>
<p>Meddelande:<br>
<textarea name="message" cols="70"></textarea>
<p align="right">
<input type="submit" name="skriv" value="Lägg till">
</form>
</td>
</tr>
</table>
add.asp
<%
Set gbok = Server.CreateObject( "Adodb.Connection" )
gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
gbok.open
namn = Request.Form("namn")
Epost = Request.Form("mail")
Message = Request.Form("message")
strSQL = "INSERT INTO guestbook(namn, Epost, Message, Datum) VALUES('" & namn & "','" & Epost & "','" & Message & "','" & now() & "')"
gbok.Execute( strSQL )
Set gbok = Nothing
Response.Redirect "gastboken.asp"
%>
Kan jag och i så fall hur fixar jag att på sidan saknas.html så finns namn och meddelande kvar?
Jag hade gjort så här:
<input type="text" name="foo" value="<% = Request.Form("foo") %>">
mvh
Ursäkta @nders, menjag förstår inte riktigt
Om inte allt har skickats, skriv ut formuläret igen, och gör utskrifter av det postade datat till value-attributen i fälten. Ex:
kod:--------------------------------------------------------------------------------<input type="text" name="foo" value="<% = Request.Form("foo") %>">--------------------------------------------------------------------------------
kan du förtydliga lite?
säg att eposten saknas. Hur skulle du skriva koden?
Fråga2:
du menar att formuläret skulle flytta in till add.asp? Men då måste jag väl ändra koden
<form name="skriv" method="post" action="add.asp">
hur då?
<%
Select Case cmd
Case ""
%>
<table width="600" border="0">
<tr>
<td>
<form name="skriv" method="post" action="denna.asp?cmd=Send">
<p><br>
Namn:<br>
<input type="text" name="namn" size="50" value="<%= Request.Form("namn")%>"></p>
<p>E-post<br>
<input type="text" name="mail" size="50" value="<%= Request.Form("mail")%>"></p>
<p>Meddelande:<br>
<textarea name="message" cols="70"><%= Request.Form("message")%></textarea>
<p align="right">
<input type="submit" name="skriv" value="Lägg till">
</form>
</td>
</tr>
</table>
<%
Case "Send"
If Epost <> "" Then
namn = Request.Form("namn")
Epost = Request.Form("mail")
Message = Request.Form("message")
Response.Write "Lyckades få in: " & namn & vbCrlf _
& Epost & vbCrlf _
& "<p>" & Message & "</p>"
Else
Response.Redirect("denna.asp")
End If
End Select
%>
Får det inte till det hela = oavsett vad jag skriver, så det enda som händer när jag trycker på "lägg till" är att sidan add1.asp visas igen - oifylld
<html>
<head>
<title>Skriv i gästboken</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<%
Select Case cmd
Case ""
%>
<table width="600" border="0">
<tr>
<td>
<form name="skriv" method="post" action="add1.asp?cmd=Send">
<p><br>
Namn:<br>
<input type="text" name="namn" size="50">
</p>
<p>E-post<br>
<input type="text" name="mail" size="50">
</p>
<p>Meddelande:<br>
<textarea name="message" cols="70"></textarea>
<p align="right">
<input type="submit" name="skriv" value="Lägg till">
</form>
</td>
</tr>
</table>
<%
Set gbok = Server.CreateObject( "Adodb.Connection" )
gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
gbok.open
namn = Request.Form("namn")
Epost = Request.Form("mail")
Message = Request.Form("message")
Case "Send"
If Request.Form("epost") <> "" Then
strSQL = "INSERT INTO guestbook(namn, Epost, Message, Datum) VALUES('" & namn & "','" & Epost & "','" & Message & "','" & now() & "')"
gbok.Execute( strSQL )
Set gbok = Nothing
Response.Redirect "gastboken.asp"
Else
Response.Redirect "add1.asp"
End If
End Select
%>
</body>
</html>
Det jag vill göra är:
Något sånt här:
<html>
<head>
<title>Skriv i gästboken</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<%
namn = trim(Request.Form("namn"))
Epost = trim(Request.Form("mail"))
Message = trim(Request.Form("message"))
if namn = "" or Epost = "" or Message = "" then
if request.form("skriv") <> "" then response.write "Du måste fylla i alla fält<br>"
%>
<table width="600" border="0">
<tr>
<td>
<form name="skriv" method="post" action="add1.asp?cmd=Send">
<p><br>
Namn:<br>
<input type="text" name="namn" size="50" value="<%=Server.htmlencode(namn)%>">
</p>
<p>E-post<br>
<input type="text" name="mail" size="50" value="<%=Server.htmlencode(Epost)%>">
</p>
<p>Meddelande:<br>
<textarea name="message" cols="70"><%=Server.htmlencode(Message)%></textarea>
<p align="right">
<input type="submit" name="skriv" value="Lägg till">
</form>
</td>
</tr>
</table>
<%
end if
if namn <> "" and Epost <> "" and Message <> "" then
Set gbok = Server.CreateObject( "Adodb.Connection" )
gbok.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\plelkes\db\guests.mdb")
gbok.ConnectionString = "Data Source='" & MdbFilePath & "'"
gbok.open
strSQL = "INSERT INTO guestbook(namn, Epost, Message, Datum) VALUES('" & namn & "','" & Epost & "','" & Message & "','" & now() & "')"
gbok.Execute( strSQL )
Set gbok = Nothing
Response.Redirect "gastboken.asp"
End If
%>
</body>
</html>
Glöm inte heller bort att skydda dig mot SQL injection på inmatade värden.
tack @nders för dina svar! Skall kolla så snart jag kommer hem.
Ser redan att
men vad är
Glöm inte heller bort att skydda dig mot SQL injection på inmatade värden.
vad är
PLks skrev:
- SQL injection
- hur skyddar man?
Sök lite här i Aspforumet så lär du hitta många trådar som förklarar ovanstående.
@nders skrev:
Jag hade gjort så här:
- Lägg formuläret på en asp-sida (samma asp-sida som koden som lägger in i databasen).
- Kolla med en if-sats innan du lägger in informationen så allt har skickats.
- Om inte allt har skickats, skriv ut formuläret igen, och gör utskrifter av det postade datat till value-attributen i fälten. Ex:
<input type="text" name="foo" value="<% = Request.Form("foo") %>">mvh
Vettigt kan ju vara att ha en Server.HTMLEncode på Request.Form("foo"). Annars flippar formuläret om man har med ett citattecken.
Erik Juhlin skrev:
Vettigt kan ju vara att ha en Server.HTMLEncode på Request.Form("foo"). Annars flippar formuläret om man har med ett citattecken.
Absolut. Därför hade jag med det i mitt senaste kodförslag. :)
Mvh
Tack @nders, din kod funkar klockrent! (som vanligt)
Fick ett nytt probelm:
kan ej skicka mail med nedanstående kod:
Response.Write "<BR><A HREF=""rsGbok('Epost')"">Skicka insändaren E-post: </A>"
Response.Write "<BR><A HREF=""mailto:" & rsGbok("Epost") & """>Skicka insändaren E-post: </A>"
Red. pga extrem klantig- och blindhet.
Response.Write "<BR><A HREF="mailto:<%=rsGbok('Epost')%>">Skicka insändaren E-post: </A>"
verkar vara fel med koden:
sidan kan ej visas..
Sorry. Det ska inte vara apostrofer runt fältnamnet från recordsetet, utan citationstecken. Copy / Paste-fel från din kod...
Dessutom: Bort med egna http-felmeddelande i IE så får du vettiga felmeddelanden istället för "Sidan kan inte visas".
Det går ju inte att felsöka om du inte får reda på felmeddelandet.
Trots att jag har flyttat apostrofer fram och tillbaka får jag
Microsoft VBScript compilation error '800a0409'
Unterminated string constant
/plelkes/gastboken.asp, line 77
Response.Write "<BR><A HREF=""mailto:<%=rsGbok(""Epost"")
---------------------------------------------------------^
Jag ser iofs att jag har varit alldeles för snabb på tangenterna. Krångla mindre är mitt råd till mig själv, och framför allt: skriv rätt. ;)
Nytt förslag:
Response.Write "<BR><A HREF=""mailto:" & rsGbok("Epost") & """>Skicka insändaren E-post: </A>"