Felmeddelandet: Robert: Som cougarina sa men, du har gjort en "grov" tankemiss också: Koden är sårbar för SQL inject. Kan lätt skydda dig med: SÅ CLng skyddar en mot SQL injections?? Tack, måste ändra koderna så att jag skyddar mig mot dessa då!! Inte riktigt men nästan, CLng betyder att det är ett tal (long). Om man anger ett strängvärde kommer sidan generera ett fel. På detta sätt skyddar du dig mot SQL inject. Felmeddelande som inte jag fattar:
Error Type:
Microsoft JET Database Engine (0x80040E07)
Data type mismatch in criteria expression.
/seal/sida/texter/index.asp, line 179
Rad 179:
Set Rs = Cn.Execute("SELECT * FROM texter WHERE cat_id = ' & Request.Querystring(""cat_id"") & '")
"cat_id" är då av typen "tal" i databasen!!!
Någon som kan hjälpa mig???Sv: Felmeddelande som inte jag fattar:
När det är tal ska du inte använda ' (enkelfnutt)
Är det text så ska du däremot använda enkelfnutt.
//Anna-KarinSv: Felmeddelande som inte jag fattar:
<code>
'rätt kod:
Set Rs = Cn.Execute("SELECT * FROM texter WHERE cat_id = " & Request.Querystring("cat_id"))
'fel kod:
Set Rs = Cn.Execute("SELECT * FROM texter WHERE cat_id = ' & Request.Querystring(""cat_id"") & '")
</code>
Ser du skillnaden? ;) Du förstår; request.querystring körs utav asp, inte av databasen. För att något ska köras utav asp får det inte stå i en sträng, och det var anledningen till att databas-saken klagade, den kan inte köra asp-kod :)Sv: Felmeddelande som inte jag fattar:
<code>
Set Rs = Cn.Execute("SELECT * FROM texter WHERE cat_id = " & CLng(Request.Querystring("cat_id")))
</code>Sv: Felmeddelande som inte jag fattar:
Sv: Felmeddelande som inte jag fattar:
Sv: Felmeddelande som inte jag fattar:
Det kan vara bättre att använda IsNumeric() funktionen och meddela användaren att dess inmatade värde är ogiltligt.
En "lat" lösning är bättre än inget skydd alls. ;o)