Hejsan alla De här brukar jag lägga in på mina sidor, och de ser ut att fungera: En inmatnings sida som innehåller ett formulär tycker inte jag skall förfalla. Om jag t.ex. skriver ett inlägg här på Pellesoft. Vill kolla på vad det var jag svarede, kopiera något, etc. Är det inte kul att backa sedan komma tillbaks och finna att det man skrivit försvunnit.Page has expired
Jag håller på att bygga en litet projekt i ASP. Jag vill undvika att en användare skapar dubletter i min databas genom att gå tillbaka ett steg i sin browser och sända informationen igen. Finns det något knep att använda sig av för att få upp Page has expired sidan i browsern? Jag har provat abandon i session, men det verkar inte att fungera. Skulle vara tacksam för hjälp.
/MikaelSv: Page has expired
<code>
<%
Response.Expires = 0
Response.ExpiresAbsolute = Now() - 1
%>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="NO-CACHE">
<META HTTP-EQUIV="Expires" CONTENT="Thu, 8 Oct 1981 01:01:01 GMT">
</head>
</code>Sv: Page has expired
Det finns andra sätt. Dett bästa sätt jag känner till för att begränsa dublletter. Är att ge vare ny post ett ID när sidan skapas. Sedan kontrollera att det inte finns när koden sparas.
Exempel:
<code>
<%
Dim rs
Dim con
Dim RecId
Dim Found
Set con = Server.CreateObject("ADODB.Connection")
con.Open ">>>Connection String<<<"
Set rs = Server.CreateObject("ADODB.Connection")
Randomize
Do
RecId = Int(Rnd * 2147483647)
rs.Open "SELECT Null FROM TabellNamn WHERE RecId = " & RecId, con
Found = Not rs.EOF
rs.Close
Loop While Found
Set rs = Nothing
con.Close
Set con = Nothing
%>
<form method="post" action="skicka.asp">
<input type="hidden" name="RecId" value="<%=RecId%>">
<input type="text" name="text" value="">
<input type="submit" name="action" value="Skicka">
</form>
</code>
<code>
<%
Dim rs
Dim con
Dim RecId
If Request.Form("action") = "Skicka" Then
Set con = Server.CreateObject("ADODB.Connection")
con.Open ">>>Connection String<<<"
Set rs = Server.CreateObject("ADODB.Connection")
rs.Open "SELECT Null FROM TabellNamn WHERE RecId = " & RecId, con
If rs.EOF Then
con.Execute "INSERT INTO TabellNamn (RecId, FältNamn) VALUES (" & CLng(Request.Form("RecId")) & ", '" & Replace(Request.Form("Text"), "'", "''") & "')
Response.Write "Posten har mottagits!"
Else
Response.Write "Du kan inte skicka en post två gånger!"
End If
End If
%>
</code>