Avatar billede pixelboxdk Nybegynder
15. december 2005 - 14:07 Der er 7 kommentarer og
1 løsning

Session kortere?

Hejsa eksperter!

Jeg er pt. igang med at lave en shop.. Men der er et lille problem.. Hver gang en bruger kommer ind på siden bliver han tildelt et session nr.. self. fordi han skal have et unikt nr. så han kan ligge ting i sin indkøbskurv osv. men.. jeg bruger også session's nummeret som ordrenummer.. Men det er altså 23 cifre langt.. er der ikke en måde hvorpå man kan formatere nummeret? så det kun er 10 cifre fx.?

Min kode er nu:
<%
if session("shopperid") = "" then
    session("shopperid") =""&session.sessionID&""&replace(replace(replace(now(),"-",""),":","")," ","")&""
else
    session("shopperid") = session("shopperid")
end if

%>

Nogen der ved hvordan? :)

På forhånd tak!
Daniel
Avatar billede keysersoze Ekspert
15. december 2005 - 14:42 #1
den lette måde er jo bare at tage de 10 første eller sidste tegn;

left(session("shopperid"),10)
eller
right(session("shopperid"),10)

Men jeg ville ikke turde bruge det som et unikt ordrenummer da en sesion kun er unik indtil fx reboot - og ydermere hvis du afkorter session og kune tager et vist antal tegn er risikoen for fejl endnu større.

Sessionen kan man bruge for at holde styr på brugerne idet de besøger siden - dvs når de lægger en vare i kurven etc. Derefter skal det være databasen der er den styrende og ikke noget serveren tilfældigt genererer - autonummereringen i databasen kan du jo evt bare starte ved nummer 1464657 hvis du er bange for at folk tror det er for useriøst med et for lille ordrenummer. Alternativt - alt efter hvilken database du bruger - kan du formentlig også lade den køre med en længere row-nøgle.
Avatar billede pixelboxdk Nybegynder
15. december 2005 - 14:56 #2
Jeg kan godt se din pointe med det vil være farligt med at lave et kortere ordrenummer.. Men af hvad jeg kan se i session nummeret, indeholder det datoen, og tidspunktet i de sidste 10 cifre. Så det ville vel på den måde være unikt, selv om det bliver kortere? Jeg har prøvet med din kode "right(session("shopperid"),10)", men det ser ikke ud til at virke.. Den kommer med fejlen:
Type mismatch: 'right'
Avatar billede keysersoze Ekspert
15. december 2005 - 15:09 #3
session("shopperid") = right(session("shopperid"),10) ?

hvis det er tidspunkt så er det i hvert fald afhængig af systemet for her er et uddrag af nogle af de sessionids som jeg kan se;

436906248
210354346
976887156
50796927
887769470
1024368209

og dem kan jeg ikke se særlig meget dato/tidspunkt i.
Avatar billede pixelboxdk Nybegynder
15. december 2005 - 15:22 #4
15122005151715
Det er de 14 sidste cifre fra et session nr.. og det er jo 15/12/2005 - 15:17:15 :)

Altså.. Koden er:

<%
if right(session("shopperid"),10) = "" then
    right(session("shopperid"),10) =""&session.sessionID&""&replace(replace(replace(now(),"-",""),":","")," ","")&""
else
    right(session("shopperid"),10) = right(session("shopperid"),10)
end if
%>

og den kommer med fejlen:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'right'

/includes/header.asp, line 7
Avatar billede pixelboxdk Nybegynder
15. december 2005 - 15:25 #5
ah.. undskyld.. hehe.. det er self. mig der har lavet fejlen.. det virker nu.. skulle self. ik skrive det over det hele :P
Avatar billede keysersoze Ekspert
15. december 2005 - 15:31 #6
i så fald kunne du evt overveje at bruge datoen direkte da siden jo måske kunne tænkes at skulle flytte server eller lignende så du fik en anden type session-string der ville skabe problemer.

session("bla") = replace(replace(replace(now(),":",""),"-","")," ","")
Avatar billede keysersoze Ekspert
15. december 2005 - 15:32 #7
... men selv det kan jo i sig selv give problemer eftersom 2 kan komme ind og få præcis samme tidsangivelse :)
Avatar billede pixelboxdk Nybegynder
15. december 2005 - 16:02 #8
Jaah.. det er selvfølgelig rigtigt ;)
men du skal have mange tak for hjælpen!
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