Function CheckInputData(ByVal sInputData)
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.Pattern = "[^\s\d,]"
CheckInputData = Not objRegExp.Test(sInputData)
Set objRegExp = Nothing
End Function
If Not CheckInputData(participantId) Then
Response.Write "Incorrect input data."
Response.End
End If
Denna kod
where id = " & CheckInputData(request.QueryString("id")) & " AND anv_nr = " & session("anv_nr") & ""
Ger
DELETE from hund_dagkoppling where id = True AND anv_nr = 90
Men id bör ju vara en siffra och inte true, för då tar det alla, varför blir det tokigt?
//Kockar som jag ska koka soppa inte hålla på med hemsidor!
Funktionen kontrollerar bara om värdet är giltigt, och gör inga ändringar på något värde. Exempel:
lID = request.QueryString("id")
If CheckInputData(lID) then
' ok, då kör vi...
".....where id = " & lID & " AND anv_nr = " & session("anv_nr") & ""
End if
Dock är just den funktionen endast tänkt att validera kommaseparerade strängar som man använder i SQL.
För vanliga numeriska tal så är det smidigare att bara köra med CLng.
lID = CLng(request.QueryString("id"))
where id = " & lID & " AND anv_nr = " & CLng(session("anv_nr"))
Det funkar i.o.f.s. att skriva så som @nders skrev eftersom att mellanslag och kommatecken inte kan göra någon skada. Men som sagt är den gjort för kommaseparerade strängar. De kan man inte typkonvertera, då får man göra nåt liknande som funktionen jag gjort.
260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25