Nu har jag stött på ett konstigt fel som är trasigt... IGEN!
När jag gör en session.abandon nollställs session och alla variabler jag har lagt i session försvinner. Men när jag sedan går in på min sida och tittar i kundkorgen så ligger varorna kvar där....
Detta beror på att kundkorgen känner av befintligt sessionId och jämför det med ett fält för sessionId som jag har i databasen.
Men nu till min fråga...
Ska jag inte få ett nytt sessionId när jag går in på sidan efter att ha gjort en session.abandon???
Som det är nu får jag samma id hela tiden.....
Nån som vet vad som kan vara fel????
------------------ Du lever bara en gång och den gången är nu!
Jo, man får ett nytt nummer när man gör en abandon och sen accessar asp-skript på nytt. Det finns ju en liiiten chans att du får samma nummer som innan men det är troligtivs inte det som är fel i ditt fall. Kanske cachas sidan på antingen servern eller klienten. Det tippar jag på. Jag föreslår att du sätter kundkorgssidan till att alltid refreshas då den anropas med:
Response.Expires = -1
Hoppas att det fungerar.
------------------
/ Torbjörn Hansson, webbutvecklare Endero Sverige
MS rekommenderar att man inte skall använda sessionid till att använda som primära nycklar i databasen eftersom det inte är unikt på något sätt. Vad man kan göra däremot är att tilldela en user ett GUID som är globalt unikt (ingen annan i världen kommer någonsin att få samma nummer). Eller att du lägger till en nyckel som ex. skulle kunna vara klientens ip-nummer. Då blir nyckeln:
- SessionId
- IP-address
------------------
/ Torbjörn Hansson, webbutvecklare Endero Sverige
Hmm, kan vara så att jag missförstår lite, men vad jag vet använder jag inte sessionId som någon primärnyckel....
I min korgtabell i databasen lägger jag ner sessionId att användas som en identifiering av korgen medans kunden är inne i shopen och handlar. När kunden sedan lägger ordern raderas alla värden i denna tabell med villkoret att sessionId i tabellen är det samma som klientens sessionId....När kunden lägger ordern måste han/hon identifiera sig med kundlogin och då får jag ett kundId som läggs ner i databasen istället för sessionId:t...
Detta funkar jättebra ända tills jag börjar fundera vilka problem som kan uppkomma....
Om en kund bryter en session och bara går ut raderas posterna i tabellen automatiskt efter två dygn....
Men om kunden kommer tillbaka till sidan utan att ha startat om webbläsaren (innan dessa två dygn har gått) så får kunden upp de poster som lades in under förra besöket...
Jaja, det verkar ju inte finnas nån lösning för att komma ifrån detta så jag får väl leva med det....
------------------ Du lever bara en gång och den gången är nu!
Då verkar det ju som du använder sessionid som en logisk nycket iaf. Men det spelar ju ingen roll för din lösning verkar vara helt ok. Men du, vore det inte bättre att rensa kundkorgen vid Session_OnEnd?
Men man skall inte få samma sessionid om man kommer tillbaka efter en abandon. Det har jag aldrig varit med om. Men du kan ju göra så att listar kundkorgen med varor som "plockades" inom tiden X i sådana fall.
------------------
/ Torbjörn Hansson, webbutvecklare Endero Sverige
Men vad är problemet? Om samma kund ansluter igen är allt ha kan se sin egna varukorg. Ingen annans. Ett sessionsid ska inte kunna förekomma igen inom rimlig tidsgräns.
Att sessionsid på något sätt finns kvar är som du beskriver för att samma webbläsarsession används, och att du antagligen kör lokalt.
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
560 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e