Avatar billede heyn Nybegynder
21. juni 2006 - 13:59 Der er 14 kommentarer og
3 løsninger

En indkøbskurv - overføre data til de næste sider.

Hej Alle

Jeg er ved at lave en indkøbskurv hvor indholdet i kurven selvfølgelig skal følge med når jeg lægger endnu en vare i kurven.
Jeg kunne selvfølgelig udvikle en kompliseret side hvor der i formen er indført en masse <input name="vare1" visual="none" value="vare1">, men jeg har en mistanke om at noget med cookies løser problemet.
Jeg er desvære ikke så god til det det med cookies. kan man f.eks. oprette arrays i cookies? altså vare[1] = "vare1" og vare[2] = "vare2" etc.
Kender nogle et par danske sider hvor man kan lære om cookies?
Er der en langt simplere løsning på mit problem?

M.v.h. Christian
Avatar billede iss Novice
21. juni 2006 - 14:03 #1
Ja, session...
Avatar billede Slettet bruger
21. juni 2006 - 17:51 #2
Du skal helt sikkert bruge session's!
$_SESSION['dinsession'] = 300;

Men du skal huske at starte session i starten af dit dokument: session_start();
Avatar billede Slettet bruger
21. juni 2006 - 17:56 #3
Jeg vil bestemt mene, at cookies vil være den bedste løsning på dit problem. Eventuelt kan brugere herved gå ind på din side på et senere tidspunkt, og stadig genfinde deres kurv.

Det er lidt mere kompliceret at arbejde med cookies end med sessioner, men det vil ikke tage dig mere end et par minutter at sætte dig ind i det. Se eventuelt http://dk.php.net/manual/en/function.setcookie.php

Hvis du registrer alle varer som $_COOKIES[$productId] = $amountSelected;, vil du nemt kunne tilføje og slette varer og redigerer mængder, mens du ligeledes har mulighed for at overføre din kurv til en eventuelt database når varerne skal købes.
Avatar billede Slettet bruger
21. juni 2006 - 19:03 #4
Ja der er jeg lidt uenig selvom det lyder rigtig smart :P
Avatar billede mclemens Nybegynder
21. juni 2006 - 19:41 #5
Fordelen ved basering på cookies fremfor session er at dataer om bestillingen kan opbevares til næste gang brugeren skal købe noget hos en... - Session modsat...

Ulempen ved cookies er at ved hver forespørgsel skal cookien sendes frem til serveren og retur igen - hvorimod sessions kører på serveren og browseren skal så blot aflevere et session id der refererer til sessionen den har fået tildelt.

Dertil skal så nævnes sessions fordele: Session variabler er omgående tilgængelig i scriptet. Brugeren kan ikke pille ved en cookie og rette pris og vare oplysninger. Brugeren kan ikke lægge en ting i indkøbsvognen for senere at gå ind på siden med en vare i kurven som så ikke længere findes i købesystemet ...

- Du kan selvfølgelig også nemt opbevare priser m.v. i din session (jeg opbevarer dog kun varenr og antal) ... dog skal brugeren lave et kald til siden hver gang en ændring skal ske - da det sker via. sessions og ikke cookies... Hvis det nu var cookies kunne reduktion/øgelse laves med javascript - men hvis det gøres med javascript så er browseren ikke forbi serveren der kan sige om lagerantal stemmer...

Både cookies og Sessions kan klare det - jeg foretrækker dog sessions :o)
Avatar billede Slettet bruger
21. juni 2006 - 20:13 #6
Det vil være ekstremt overflødigt at have mere end vareid og antal i dine cookies. Og som sagt - Det kan laves med både sessioner og cookies, men jeg foretrækker at bruge cookies, da det sker, at folk lukker deres browser, og herefter alligevel gerne vil frembringe de allerede valgte varer.
Avatar billede mclemens Nybegynder
21. juni 2006 - 20:15 #7
[ Jeg kunne selvfølgelig udvikle en kompliseret side hvor der i formen er indført en masse ]

Jeg overfører dem via. simple a href link's via. url'en (varenr=det&amp;antal=det&amp;chksum=det - dog kører jeg med mod rewrite og via url splitning i mit script så det overføres via: katalog/kategorinavn/sideantallet/varenr/antalstk/chksum/index.php - og så kaster jeg en noindex afhængig af antal under variabler - når man køber forbliver man så på katalog siden) og med validering på fortløbende tilføjelser af varer så den ikke går bananas ved brug af tilbageknappen. D.v.s. man køber kun 1 vare pr. click - ovre i indkøbsvognen kan man så øge eller sænke antal (man kan dog også trykke flere gange på køb for at købe mere end 1 stk.). Køber man to af samme varer bliver antallet automatisk lagt sammen. Og så selvfølgelig en validering på varelager status... sådan har jeg (kort forklaret) lavet mit system... det var lidt indviklet - men, jeg havde også lige læst php 5 (2uger før) så tag den helt fra bunden men overvej kodnings struktur / site struktur m.v. før du koder løs ... men det med vare input felter til køb bruges selvfølgelig også på en del sites ...

- Men hverken session eller cookies er "forkert" det
afhænger også lidt af, hvad der føles nemmest for en selv...
Avatar billede mclemens Nybegynder
21. juni 2006 - 20:19 #8
[ at folk lukker deres browser, og herefter alligevel gerne vil frembringe de allerede valgte varer. ] - Jeps, det er ikke en heldig ting, hvis man bruger sessions :D (brugte javascript cookies i '99 og der kørte worldgamecenter (dengang) kun i tables og frames med en mail formular ... og der fik vi bestillinger på vare der havde været udsolgt i 2 uger... ) - husk hvis du vælger cookies at alt data i en cookie er usikker/utroværdig data. Det er session data også hvis du ikke validerer det inden du putter det ind i din session variabel :o) - forskellen er bare at cookie data er usikker ved hver request - session data er kun indtil du får get/post valideret og lagt over i session...
Avatar billede Slettet bruger
21. juni 2006 - 21:05 #9
Det er også muligt at modificere session-data, men din pointe går klart frem mht. udsolgte varer.. Det kræver under alle omstændigheder meget validering.
Avatar billede Slettet bruger
21. juni 2006 - 22:05 #10
Synes mere sessions er til sådannet noget med indkøbskurv og login, det mindre hvis det er login med husk funktion, så er cookies gode nok, samt til afstemninger.
Så man kan se om personen har stemt eller ej, men så kan brugeren slette alle cookies og stemme igen, men hvis det er pr. ip, er det også skidt, da der f.eks. ved skoler eller net-cafeer at de tit har den sammen ip.
Avatar billede heyn Nybegynder
22. juni 2006 - 07:49 #11
Hej alle kommentatorer.

Denne komentar kræver mere end en kommentar. Et SVAR er absolut nødvendigt.

Et par bemærkninger, tilføjelser, et enkelt problem og et spørgsmål om point og SVAR.
Alle jeres bemærkninger har givet mig basis til en del gode overvejelser.
Min beslutning om ihvertilfælde IKKE at bruge session er at brugerne på det lokale netværk generelt ikke er særligt gode til IT.
Hvis de ved en fejl kommer til at lukke browseren mens de bestiller varer hos IT-afdelingen skal data stadig eksistere når de atter åbner browseren. Hvad angår misbrug af cookies indhold er det ikke et problem fordi systemet kører på et beskyttet LAN.
Desuden vil cookies kunne overføre data over flere sider (sådan som jeg forstår det).
Jeg forstår det desuden således at cookies kan tildeles en art timeout således at cookies ældre end f.eks.15 min. ikke anvendes. Således at gamle cookies ikke vil være lagt i indkøbskurven i det uendelige.
Endelig forstår jeg det således at jeg, når brugeren gennemfører bestillingen, kan tildele dem en tom cookie der sletter den gamle og derved tømmer indkøbskurven.

Er ovenstående forståelser korrekte???

Og endelig 2 små simple problemer. Kender nogen en rigtig god side med tutorial / manualer om cookies på dansk?
Alle jeres kommentarer/svar er rigtig gode - det er bare ringe når man skal være så mange om at dele kun 45 point. Kan jeg i eksperten opgradere antallet point så i alle får lidt mere? Er der en anden smart løsning?

Og husk at dette spørgsmål kræver mere end en kommentar - et SVAR er absolut påkrævet.

Mvh Christian
Avatar billede Slettet bruger
22. juni 2006 - 16:43 #12
Alle dine overvejelser er korrekte (de øverste), og ja, i menuen til venstre kan du forhøje antal points til maximum 200.
Avatar billede Slettet bruger
22. juni 2006 - 16:44 #13
Og til dit spørgsmål angående cookies, har razor lavet en guide: http://www.razor.dk/php/guider/cookies/
Avatar billede mclemens Nybegynder
22. juni 2006 - 17:27 #14
Som wicez siger er alle overvejelserne rigtige - og cookies er det du skal gå efter, når de skal kunne gemme deres kruv i et stykke tid på deres maskine (det kan selvfølgelig også laves med en mysql database opbevaring ... det er dog ikke noget jeg ville anbefale - ressourcer)... Kaster da også et svar selvom jeg ikke har givet noget specielt respons på cookie guides (kender ingen)...
Avatar billede heyn Nybegynder
27. juni 2006 - 09:40 #15
Så lykkedes det vist - Tak skal i have.
Avatar billede mclemens Nybegynder
27. juni 2006 - 10:45 #16
Velbekom, og tak for point :o)
Avatar billede Slettet bruger
08. juli 2006 - 18:20 #17
Tak for points :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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