Avatar billede jriff Nybegynder
28. august 2003 - 16:49 Der er 19 kommentarer og
1 løsning

Sessions i ASP

Hejsa!

Jeg har et lille problem med den e-handelsløsning jeg laver.

Løsningen kører som den nu gør med nogle sessionvariable som fx indeholder indkøbskurven. Når kunden skal betale med dankort linker jeg videre til Interpay, som så requester en side hos mig, som indeholder den form som skal udfyldes med kortnummer etc. Problemet er at når denne side bliver requestet er den ikke en del af den session brugeren har, så jeg har ikke adgang til indkøbskurv eller noget andet. Kan man på en eller anden måde få siden til at "hoppe" ind i den tidligere session igen? Altså noget a'la':

set session=request.querystring("sessionid")

...og på den måde få adgang til sine variable igen? Eller er der en anden og smartere måde at gøre det på?
Avatar billede nmh Nybegynder
28. august 2003 - 17:18 #1
En helt simpel løsning, er at lave en tekstfil, til at gemme indkøbskurven i. Den kan du så hente frem i den nye session.
Skal købet egentlig ikke ende med at blive registreret i en database?
Avatar billede jriff Nybegynder
28. august 2003 - 17:24 #2
Jeg havde overvejet din løsning. Dit andet spørgsmål svarer egentlig på det første... jeg skal gemme ordren i en database, men først når kortet er clearet... ellers vil lageret jo blive nedskrevet selvom ordren ikke er gået igennem... Hvis jeg bare bruger en tekstfil vil jeg jo ikke kunne opdatere databasen med ordren efter kortet er clearet.
Avatar billede nmh Nybegynder
28. august 2003 - 17:32 #3
Jeg tvivler på der er en helt ideel løsning. Du bliver vist nødt til selv at lave "en bro" i mellem de to sessioner.
Avatar billede jriff Nybegynder
28. august 2003 - 17:51 #4
Ok, men hvordan laver jeg så den bro? :-)
Avatar billede krogstrup Nybegynder
28. august 2003 - 18:50 #5
hej jriff

Jeg bruger selv DIBS (architrade) og har stået i nøjagtig samme problemstilling som dig. Jeg løste problemet ved at sende min sessionsvariabler med over til DIBS på denne måde:

www.dibs.dk/relay.cgi?www.minside.dk/form_til_transaktion.asp?HTTP_COOKIE=<%=Request.ServerVariables("HTTP_COOKIE")%>

Herefter kunne jeg stadig i filen "form_til_transaktion.asp" kalde mine sessionsvariabler, eftersom de var sendt med over til DIBS´ server !!!

Du kan muligvis bruge samme løsning :-)
Avatar billede krogstrup Nybegynder
28. august 2003 - 18:51 #6
jeg prøver lige igen, denne gang forhåbentlig uden at Eksperten laver linjen om til et link:

dibs.dk/relay.cgi?www.minside.dk/minFormular.asp?HTTP_COOKIE=<%=Request.ServerVariables("HTTP_COOKIE")%>
Avatar billede eagleeye Praktikant
29. august 2003 - 08:42 #7
Du kan da nemt lave det med en database.
Hvis det et problem at den nedskriver varelageret når du putter en ordre i tabellen kan du enten lave en kolonne som fortæller om orderen er "complete" eller mangler betaling. Alternativt kan du lave en anden tabel hvor du har ordre som ikke er betalt endu og når betallingen kommer så flyttes du data fra den ene til den anden tabel.
Avatar billede jriff Nybegynder
29. august 2003 - 11:16 #8
Krogstrup> Det lyder fint, men hvordan skal man rent praktisk gøre? Jeg har tilføjet &HTTP_COOKIE=" & Request.ServerVariables("HTTP_COOKIE") til min url, men indkøbskurven er stadig tom... det virker ikke som om der kommer variable med. Skal man gøre andet?
Avatar billede krogstrup Nybegynder
29. august 2003 - 11:43 #9
har du en url hvor man kan hvad der sker på dit site ?
Avatar billede krogstrup Nybegynder
29. august 2003 - 11:43 #10
når du kigger i kilden på din side, burde du jo kunne tjekke om =<%=Request.ServerVariables("HTTP_COOKIE")%> er blevet erstattet med en string, der indeholder sessionsvariablen.
Avatar billede jriff Nybegynder
29. august 2003 - 12:03 #11
Krogstrup> Desværre ikke. Jeg må ikke offentliggøre det endnu.

Der kommer nogle tegn tilbage til min form-side, altså den bliver kaldt med ?http_cookie= [indsæt noget skrald her]. Men er det nok til at IIS automatisk hopper ind i session igen? Det er jo det der skal ske...
Avatar billede krogstrup Nybegynder
29. august 2003 - 12:05 #12
jriff >>>

Jeg er ikke helt sikker på om vi taler forbi hinanden...

Kan du ikke lige prøve at forklare mig hvor det er du har sat "http_cookie bla bla" ind og hvordan det samlede link til din formular ser ud ?

Du kan jo bare erstatte domænenavnet med et pseudo navn !
Avatar billede jriff Nybegynder
29. august 2003 - 12:19 #13
Jo... her er den url der bliver kaldt når man trykker "bestil varer":

pbs.interpay.dk?shopid=XXX.dk&sessionid=934535385&HTTP_COOKIE=ASPSESSIONIDASTQSCBQ=NHHMDLHDJONABHIENFHHBIDA

Dette gør at min form-side bliver kaldt med de samme parametre i url'en. Altså: www.site.dk/form.asp? [og så det der står ovenfor]

Er det nok til at man får sin session igen?
Avatar billede krogstrup Nybegynder
29. august 2003 - 12:26 #14
det burde det - det virker i hvert fald for mig på hnb.dk :-)
Avatar billede krogstrup Nybegynder
29. august 2003 - 12:27 #15
når serveren får forespørgsel fra interpay.dk burde den genkende sessionen pga HTTP_COOKIE teksten (så vidt jeg har forstået det...)
Avatar billede jriff Nybegynder
29. august 2003 - 12:51 #16
Hmm... det virker ikke - har lige prøvet manuelt ved at kalde siden med den rette HTTP_COOKIE som parameter. Jeg kan bare ikke forstå hvorfor det så virker for dig. Er det DIBS der kalder siden gennem deres servere, eller bliver der bare redirected til dig?
Avatar billede krogstrup Nybegynder
29. august 2003 - 12:57 #17
DIBS har et relay script som henter siden fra min server og viser den fra deres server (som jo er sikret - HTTPS).
Avatar billede jriff Nybegynder
29. august 2003 - 13:05 #18
ok... det er præcis det samme der sker her. For lige at være helt sikker: DET ENESTE du gør er at få DIBS til at kalde din form-side med ?HTTP_COOKIE=bla. og på den måde er din form-side automatisk inde i sessionen igen? INGEN rettelser på din form-side? Virker det alligevel hvis du IKKE bruger HTTP_COOKIE?
Avatar billede krogstrup Nybegynder
29. august 2003 - 13:34 #19
Taget fra dokumentation hos DIBS:

http://www.dibs.dk/277.0.html

Hvis callback-scriptet er afhængig af cookies eller sessionid, skal disse også sendes med til betalingsvinduet i parametren "http_cookie". Værdien af denne variabel skal have formen: name1=value1; name2=value2 ...

Hvis man ønsker at overføre alle cookies, der er sat, kan man benytte indholdet af environment-variablen HTTP_COOKIE, som indeholder alle cookies i det rette format.

Herunder nogle eksempler på hvordan dette gøres i ASP, php4 samt java script:

ASP:
<input type=hidden name=HTTP_COOKIE value="<%=Request.ServerVariables("HTTP_COOKIE") %>">


php4:
<input type=hidden name=HTTP_COOKIE value="<?= getenv("HTTP_COOKIE"); ?>">


eller


printf("<input type=hidden name=HTTP_COOKIE value=%s>",getenv("HTTP_COOKIE"));


java script:
<script language="javascript">
<!--
document.writeln('<input type=hidden name=HTTP_COOKIE value="'+document.cookie+'">');
//-->
</script>
Avatar billede krogstrup Nybegynder
29. august 2003 - 13:35 #20
og JA, det eneste jeg gør er at sende HTTP_COOKIE med over til DIBS. Herefter virker mine kald til sessions variabler fra min FORM.ASP udemærket selv om siden bliver hentet fra DIBS´ server !!!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester