Jag hittade ett enkelt webbshoscript som heter pellesoft webbshop och jag kan inte skriva boksäver storleksfältet trots att det är satt som text i varukorgen så här ser det ut Det ser ut som att koden är öppen för SQL injections, så jag skulle inte använda den innan det är fixat. Ok det är ju korrekt jag kommer att fixa detta men i testskedet är det öppet. Har du någon aning om varför det inte går att skriva bokstäver? i Storlek? Är det korrekt uppfattat att ifall du ger focus till #Storlek och trycker på en bokstav på tangentbordet så ändras inte värdet för #Storlek? Jo det går att skriva bokstäver men när man trycker på köpknappen kommer man till en tom htmlsida dvs ingen speciell felmeddelande OK och det händer något annat ifall det enbart är siffror i storlek? Om det enbart är siffror så lägger den sig fint i varukorgen Variabeln SQL kommer ha värde i stil med Tack för hjälpen då hoppas jag på att det funkar nu..Vad är flelet
någon som kan hjälpa mig...
<!-- #include file="inccard.asp" -->
<%Function Fixa(str)
Fixa = Replace(Trim(str),"'","''")
End function
' ==========================================================================
' Öppna databasen och hämta alla produkter.
' ==========================================================================
Set Connection = Server.CreateObject("ADODB.Connection")
SET Connection = ShopIT_GetDatabaseConn()
SQL = "SELECT Kat.Kategori, Prod.ProdId, Prod.Produkt, Prod.Beskrivning, Prod.Storlekar, Prod.Pris, Kat.KatId FROM Kat, Prod WHERE Kat.KatId = Prod.KatId AND (Kat.KatId = " & Request("KatId") & ")"
SET RS = Connection.Execute(SQL)
%>
<html>
<head>
<title>Webb Shopen</title>
<link rel="stylesheet" type="text/css" href="styles/shop.css">
<script src="/akws/js.js">
<!--
function submit1_onclick(prod) {
alert([prod] + " lagd i din korg!");
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body background="images/gronbakgrund.gif" text="#000000" vlink="#0000FF">
<table border="0" width="800">
<tr>
<td width="150"><img src="images/div.gif" alt="div.gif (51 bytes)" WIDTH="149" HEIGHT="1"></td>
<td align="center"><img src="images/shoplogga.gif" alt="shoplogga.gif (5801 bytes)" WIDTH="349" HEIGHT="90"></td>
</tr>
<tr>
<td width="150" valign="top"><p> </p>
<p></p>
<p></td>
<td align="left"> <p><small><font color="#808080" face="Verdana">Vill du köpa en produkt klickar du bara på köpknappen.</font></small></p>
<p><% DO UNTIL RS.EOF %> </p>
<div align="center"><div align="center"><center><table width="800" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td width="38%" bgcolor="#dfe0cd"><strong><small><font face="Verdana"><%= RS("Produkt") %></font></small></strong></td>
<td width="62%" align="right" bgcolor="#dfe0cd"> </td>
</tr>
<tr>
<td width="38%" valign="top"><small><font face="Verdana"><%= RS("Beskrivning") %><font face="Verdana"><br><%= RS("Storlekar") %></font></small></td>
<td width="62%" align="right" valign="top"><form method="POST" action="add.asp">
<p>
<input type="hidden" name="ProdId" value="<%= RS("ProdId") %>">
Pris: <strong><%= RS("Pris")%> :- </strong>
Storlek: <input name="Storlek" type= "text" id="Storlek" size="10">
Antal: <input name="Antal" type="text" id="Antal" size="10">
<font face="Verdana"><strong> </strong></font>
<input type="submit" name="submit1" id="submit1" value="Lägg i din korg">
</p>
<p> </p>
</p>
</form>
</td>
</tr>
</table>
</center></div><%
RS.MoveNext
Loop
%>
</small></small></font></td>
</tr>
</table>
</body>
</html>
<%
' ==========================================================================
' Stäng databasen och RS.
' ==========================================================================
RS.Close
Connection.Close
%>Sv: Vad är flelet
http://en.wikipedia.org/wiki/SQL_injectionSv:Vad är flelet
Sv: Vad är flelet
Eller är det så att när du skrivit in "gurka" i #Storlek och klickar på "Lägg i din korg"-knappen så smäller det?Sv:Vad är flelet
Sv: Vad är flelet
Hur ser add.asp ut och vilken markup spottar den ur sig i de två fallen?
Antar att det ska ner i nån tabell i nån databas nånstans -- hur ser fältet ut som storlek mappas mot? Sv:Vad är flelet
Här är add.asp
add.asp
<!-- #include file="inccard.asp" -->
<%Response.Buffer = false
' ==========================================================================
' Säg till webbläsaren att detta dokument inte innehåller någon data så att
' webbläsaren struntar i att ladda dokumentet.
' ==========================================================================
Response.Status = "204 No Content"
' ==========================================================================
' Sätter AnvID till det sessionID som vi sparade tidigare
' ==========================================================================
AnvID = Session("KundID")
' ==========================================================================
' Öppna databasen och uppdatera korgen.
' ==========================================================================
Set Connection = Server.CreateObject("ADODB.Connection")
SET Connection = ShopIT_GetDatabaseConn()
SQL = "INSERT INTO KORG"
SQL = SQL & "(AnvId, ProdId, Antal, Storlek)"
SQL = SQL & "VALUES(" & AnvId & "," & Request.Form("ProdId") & ", " & Request.Form("Antal") & ", " & Request.Form("Storlek") & ")"
Connection.Execute(SQL)
Connection.Close
%>
databasen
Storlek har jag satt PM på fältet för att det ska kunna ta emot både siffrot och bokstäverSv: Vad är flelet
INSERT INTO KORG(AnvId, ProdId, Antal, Storlek)
VALUES(42, 42, 42, bautastor)
Vilket inte lär uppskattas av databasen.
Om du ska stoppa in en textsträng måste den omgärdas av enkelfnuttar (')
d.v.s.
INSERT INTO KORG(AnvId, ProdId, Antal, Storlek)
VALUES(42, 42, 42, 'bautastor')
Men som tidigare påpekats är det här skolboksexempel på sårbarhet inför SQL injections. Kolla på möjligheten att använda t.ex. prepared SQL eller stored procedures istället för att knacka ihop en SQL on the fly och hoppas att ingen gör nåt dumt...
Sv:Vad är flelet
och db kommer att lägga utanför rooten