Hej Har en sida där man kan göra en presentation av sig själv. På sidan som skall lägga uppdatera det man i ett fält skrivit finns denna kod: <code> Om användaren har möjlighet att ändra Session("id") så kan det uppdatera alla poster genom att skicka "0 Or 1 = 1". Förstod inte det där du skrev Andreas. Om du skulle vilja ännu lite mer om vad du menar med: Men, både jag och Andreas visar ju hur du ska använda <code>Replace(sträng, "'", "''")</code> Aj Fan. Nu börjar jag fatta. Sorry! Jag brukar köra min kopplingar såhär och det blir aldrig nåt sådant problem. Tror inte det fungerar med MySQLdatabas. Eller har jag fel? If Session("id") = Requst.Querystring("id") Thenanvändare uppdaterar alla medlemmars presentationer trotts Session("id
<code>
<%
dim adoConn
dim adoRS
dim strQuery
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "DRIVER=databasen"
strQuery = "UPDATE medlemmar SET bakgrund_bild='"&Request.Form("bildurl")&"', sidan='"&Request.Form("Message")&"', bakgrund_farg='"&Request.Form("fargVal")&"' WHERE id="&Session("id")
adoConn.Execute strQuery
Response.Redirect "sidan_presentation.asp"
%>
</code>
En användare har vid två tillfällen uppdaterat alla medlemmars presentationer. Om han använder sig av någont fel i koden ovan eller om han gjort på något annat sätt vet jag ej. Vet heller inte om han har jort det med vilje eller av misstag.
Hur kan jag motverka att detta sker igen?Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&quo
<%
dim adoConn
dim adoRS
dim strQuery
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "DRIVER=databasen"
strQuery = "UPDATE medlemmar SET bakgrund_bild='" & Replace(Request.Form("bildurl"), "'", "''") & "', sidan='" & Replace(Request.Form("Message"), "'", "''") & "', bakgrund_farg='" & Replace(Request.Form("fargVal"), "'", "''") & "' WHERE id=" & Session("id")
adoConn.Execute strQuery
Response.Redirect "sidan_presentation.asp"
%>
</code>
Nåt sånt? http://www.pellesoft.nu/login/articles/databas/quotationmark.aspSv: användare uppdaterar alla medlemmars presentationer trotts Session(&quo
Men du kan lösa det med:
<code>
<%
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function
Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Value
Else
SQLNumber = "Null"
End If
End Function
dim adoConn
dim adoRS
dim strQuery
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "DRIVER=databasen"
strQuery = "UPDATE medlemmar SET bakgrund_bild=" & SQLText(Request.Form("bildurl")) & ", sidan=" & SQLText(Request.Form("Message")) & ", bakgrund_farg=" & SQLText(Request.Form("fargVal")) & " WHERE id=" & SQLNumber(Session("id"))
adoConn.Execute strQuery
Response.Redirect "sidan_presentation.asp"
%>
</code>Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&
"uppdatera alla poster genom att skicka "0 Or 1 = 1"."
Förklara även koden lite mer vad de olika sakerna gör.
Session("id") skapas endast när man loggar in på sidan. Kan användaren trotts det ändra Session-värdet själv eller?
Användaren som ändrat allas presentationer mailade mig och skrev:
"Sorry!
Tips!
om du insertar en sträng i databsaen, se till att göra såhgär
Sträng = Replace(sträng, "''", '")"
...Förstår faktiskt inte heller hur jag skall ändra så att det blir som han menar.Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&
Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&
Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&
<code>
<%
dim adoConn
dim adoRS
dim strQuery
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "DRIVER=databasen"
adoRS.Open "SELECT * From medlemmar WHERE id='"& Session("id") &"'", adoConn, 1, 3
adoRS("bakgrund_bild") = Request.Form("bildurl")
adoRS("sidan") = Request.Form("Message")
adoRS("bakgrund_farg") = Request.Form("fargVal")
adoRS.Update
adoRS.Close
Set adoRS = Nothing
Response.Redirect "sidan_presentation.asp"
%>
</code>
funkar inte adoRS.Open kopplingen, så kan du prova denna
adoRS.Open "SELECT * From medlemmar WHERE id="& Session("ID"), adConn, 1, 3
Lycka till!!
mvh
//JonnieSv: användare uppdaterar alla medlemmars presentationer trotts Session(&
Men du Molle vad vad är det Replace(sträng, "'", "''") egentligen gör?
Vaför är det så viktigt att använda sig av Replace när man uppdaterar databasen?Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&
Svara
Sv: användare uppdaterar alla medlemmars presentationer trotts Session(&
Delete
else
Response.redirect
Hassan