[asp] probleem met sessies

Pagina: 1
Acties:

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
'k ben bezig met een e-commerce website.
Daarin heb ik voor mijn winkelkarretje gebruik gemaakt van een Dictionary component omdat dit mij het simpelste leek om producten toe te voegen e.a.

Nu heb ik volgend probleem:
'k heb een pagina: producten.asp waarin ik al mijn beschikbare producten laat zien. Op deze pagina staat ook een knop "toevoegen" waarmee ik dan verwijs naar "winkelkarretje.asp?actie=voegtoe".

In "winkelkarretje.asp" heb ik eerst en vooral de volgende code:
code:
1
set karretje = session("winkelkar")

winkelkar is dus zo een Dictionary

Daarna controleer ik wat de actie is, "voegtoe" in dit geval. Op het einde steekt dan terug volgende code:
code:
1
set session("winkelkar") = karretje

Wanneer ik nu 2 browsers en als 2 verschillende users inlog, is het winkelkarretje steeds hetzelfde. Maw: die sessie-variabelen lukken niet :( . Voeg ik iets toe als User1 dan ziet User2 ook deze producten. 'k Heb er al uren op zitten zoeken, maar vindt het dus werkelijk niet. Als jullie mij kunnen helpen ...

Ter verduidelijking volgend fragment in "winkelkarretje.asp"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
set karretje = Session("winkelkar")         

actie = Request.QueryString("actie")
    
if actie = "voegtoe" then 
    ... (producten aan de dictionary toevoegen)
   response.redirect "winkelkarretje.asp?actie=bekijk"
end if

if actie = "bekijk" then
   ...  ( de dictionary nog eens afdrukken)
end if

set session("winkelkar") = karretje

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • watzie
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:26
Waar maak je het winkelkarretje aan (en hoe?). Er zijn altijd twee voorwaarden voor een goede sessie in een asp: allereerst moet je applicatie een echt subweb zijn wat je aldus ook zo moet instellen. Vervolgens moet je, wat het pad van je applicatie ook is, de applicatie altijd aanroepen volgens http://jouwwebsite/applicatienaam (waarbij applicatienaam de naam van het subweb is). Tenslotte MOET er in dat subweb een global.asa zijn met daarin de onsession_start en onsession_end subs, zelfs al zijn ze leeg. In de onsessionstart zou je dus je dictionary kunnen initialiseren, dit zou ik echter nooit doen. Beter op de eerste pagina waar je hem wilt gebruiken testen of ie al bestaat en zo niet het daar met server.createobject aanmaken.

Tot slot nog opmerking: session... = karretje hoeft niet, je hebt hem al gereferenced dus alles wat je met karretje doet wordt dan automatisch in je session dictionary opgeslagen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
Mijn winkelkarretje wordt gemaakt wanneer er iemand juist heeft ingelogd ...
code:
1
set session("winkelkar") = server.createobject("Scripting.Dictionary")

https://fgheysels.github.io/


  • watzie
  • Registratie: Juni 2001
  • Laatst online: 07-07 16:26
Heb je alle stappen doorlopen zoals ik ze beschreven heb? Als je wil mag je wel even je asp's doormailen (en een beschrijving van hoe je alles ingesteld hebt) dan kijk ik er naar voor je...

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

als je ze nou gewoon laat inloggen en ipv session("karretje") session.sessionid gaat gebruiken.

wel elke keer als een nieuw iemand inlogt de oude sessions uit de db verwijderen (die dus dezelfde zijn)

dan maakt t nie uit wat er in je karretje staat, en t is een veilige oplossing :)

je kan ook gebruik maken van cookies erbij :) of ip adressen :)

en als je
code:
1
set session("winkelkar") = server.createobject("Scripting.Dictionary")

gebruikt is t logisch dat er elke keer t zelfde in staat, nl:
server.createobject("Scripting.Dictionary")

das een constante :P en dus is dat elke keer t zelfde.

disjfa - disj·fa (meneer)
disjfa.nl