end if %> <% else %><% Set conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/db.mdb") strSQL = "Select * From varekurv where ip = '" & Request.ServerVariables("REMOTE_ADDR") & "' AND produkt_id = " & request.querystring("id") & " AND ordreid = 0" Set rs = Conn.Execute(strSQL)
if not rs.eof then
sql1 = "UPDATE varekurv SET antal=antal+1 where ip = '" & Request.ServerVariables("REMOTE_ADDR") & "' AND produkt_id = " & request.querystring("id") & " AND ordreid = 0" Conn.Execute(sql1)
Dette indlæg er ikke løsningen på dit nuværende problem, men blot gode råd:
1) Objekter skal nedlægges
Når du opretter (/åbner forbindelse til) et objekt, dvs. bruger "set navnet = objektet" (uden ""), skal du huske at lukke/nedlægge det igen. Det gør du med:
"navnet.close" (uden ""), hvis den har en "close" funktion.
Derefter destruerer/fjerner du objektet fra hukommelsen:
set navnet = nothing
2) IP-baseret indkøbskurv = ikke godt, gange 2
Et hurtigt kig på din kode, får mig til at tro at din indkøbskurv er IP-baseret, via en database. Med andre ord, du gemmer IP adressen på brugere i databasen, og kan til enhver en tid hive varerne frem (fra databasen).
For det første skal du bruge yderligere kode, for at fjerne varerne efter en eller anden periode, så varerne ikke er "låst" (trukket fra beholdningen) for evigt, hvilket forhindre andre brugere at tilføje de pågældende varer til indkøbskurven.
For det anden vil du få et problem / brud på sikkerheden, hvis flere brugere fra samme husstand/skole/arbejdsplads/osv lægger varer i indkøbskurven. Hvis du ikke sikrer dig imod det, kan de faktisk se og slette hinandens varer, samt tilføje ting til hinandens indkøbskurv..
Jeg håber at det er noget du allerede har tænkt på, og at du har beskyttet dig imod det.
Jeg kan se at der er et par ting, der ikke fremgår helt klart, med hensyn til de to punkter..
Tilføjelser:
1) Når objekter skabes, tager de hukommelse. Når database forbindelser oprettes, tager de ressourser. Man skal derfor frigøre ressourserne, ellers kan man få performans problemer (præstationsproblemer på web-serveren).
2) Hvis en bruger lægger en vare i indkøbskurven, og beslutter sig for bare at lukke browser-vinduet, vil varen forblive i indkøbskurven (hvilket er lig databasen) i al evighed.. indtil man (f.eks. en administrator) direkte går ind i databasen og sletter dem (eller via en eller anden frontend).
Hvis folk (i et hus, på en skole, på en arbejdsplads) kun har en (dynamisk) offentlig IP via udbyderen, hvilket de fleste har da fast koster ekstra, vil de have samme IP alle sammen (fra det pågældende sted). Så du skal lige have testet din kurv fra samme sted, bare med forskellige computere.. se om computer A kan se computer B's indkøbskurv.. Hvis computer A kan det, skal du skrotte IP-delen af indkøbskurven, og bruge sessions i stedet for.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.