15. december 2005 - 14:07Der 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
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.
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'
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 %>
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.
Jaah.. det er selvfølgelig rigtigt ;) men du skal have mange tak for hjælpen!
Synes godt om
Ny brugerNybegynder
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.