Laver nyt session for hvert klik???

Tags:    php

<< < 12 > >>
Så kom der et nyt problem op... Efter jeg fik fikset mit design i denne tråd:
http://www.udvikleren.dk/PHP/Thread.aspx/6/28962/
Er der kommet et nyt problem op
Min indkøbskurv virker ikke længere...
Jeg har en tabel til min indkøbskurv i databasen hvor produktet bliver tilføjet til når du putter det i indkøbskurven. og den del virker fint nok pånær hver gang du klikker køb bliver der lavet et nyt session id og derved ligger den ikke varen til det der ligger der i forvejen fordi session id ikke er ens.
Som sagt alt virkede fint nok inden jeg ændrede det med doctype... i den anden tråd.

Det skal lige tilføjes at jeg har ændret koden lidt frem tilbage for at få den til at virke, men uden held. lige nu er den sat til bare at tilføje 1 men der er meningen 1 skal erstattes med en session variabel der indeholder antallet du skrev i antals boksen ved siden af køb knappen.

Her har i mine koder.

produkt_visning.php - Det eneste at kikke på her køb knappen går jeg ud fra men nu giver jeg jer al koden for at være sikker.

Fold kodeboks ind/udKode 


top.php og buttom.php som jeg henter ind i dokumentet indeholder dette:
top.php
Fold kodeboks ind/udKode 

buttom.php
Fold kodeboks ind/udKode 


Når du trykker på køb knappen bliver du sendt til cart.php?action=add&p=X hvor X=vare id.
Det eneste den gør denne gang er ved at køre functionen addToCart da action er add.
Fold kodeboks ind/udKode 


Min addToCart function ligger i dette dokument som bliver hentet ind:

cart-functions.php
Fold kodeboks ind/udKode 


Sig endelig til hvis i vil have flere koder.
Jeg vil være jer evigt taknemlig for at hjælpe mig med dette da jeg ikke rigtig kan komme nogle vejne inden det her virker igen.



15 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
skrive session_start i toppen af produkt_visning.php



PHP.INI

Jeg kan ikke lige se at der skulle väre noget galt i din php.ini -fil.


MySQL Character set:

Ja, og nej, -- men mest nej.

Det Character set som din database anvender skal du sätte i din database - og ingen andre steder.

Hvis du önsker at MySQL skal aktivt understötte æ, ø, å så skal du angive en koalition(charset type), dels når du opretter din database, dels når du opretter tabeller i din database.

Desväre kan man ikke indsätte billeder her, ellers så ville jeg ta' et screendump til dig.

Jeg vil anbefalde dig at anvende HTML entities, da du under alle omständigheder bör, af hensyn til den enkelte brugers browser, osv., konvertere specialle characters til HTML for at sikkre at de bliver vist korrekt.


Din Applikation:

Jeg kan ikke rigtig hjälpe dig vidre lige umiddelbart, uden selv at afpröve din applikation og gå den igennem bid for bid. Jeg er sikker på at fejlen opstår i den process der afvikles når du tilföjer vare til din "kurv". Men som sagt så bliver jeg nöd til at side med koden hvis jeg skal kunne hjälpe dig yderligere.

Når jeg gennem går din kode så finder jeg ikke nogen fejl.



Indlæg senest redigeret d. 29.06.2009 22:34 af Bruger #11375

1. Hvordan håndtere du helt konkret en brugers session og gemmer du en session in en database, eller i en fil på serveren?

2. Melder PHP nogen fejl overhoved, eller hvordan kan du konstatere at der oprettes flere sessions per bruger?






1. Hvordan håndtere du helt konkret en brugers session og gemmer du en session in en database, eller i en fil på serveren?

2. Melder PHP nogen fejl overhoved, eller hvordan kan du konstatere at der oprettes flere sessions per bruger?


Eh jeg tror mine sessions bliver oprettet midlertidig på serveren i en fil er det ikke det session_start gør?
Ellers er jeg ikke sikker på hvad du mener.

Jeg gemmer session id sammen med den vare der bliver tilføjet til inkøbskurven sådan at når indkøbskurven skal vise produkter søger den efter dem der har brugerens session id.

grunden til jeg kan se at den skifter session id er at hvis jeg tilføjer 3 x det samme produkt (altså klikker køb 3 gange) tilføjer den 3 varer med 3 forskellige session id i databasen.



Afprøver du på din egen test server nu?

Og har du adgang til den tmp/ mappe hvor i PHP som default gemmer session filer.


Omkring sessions, så er det sådan at du kan gemme oplysninger omkring sessions i en database hved hjælp af funktionen "session_set_save_handler()

Dokumentation: http://se2.php.net/manual/en/function.session-set-save-handler.php



Indlæg senest redigeret d. 27.06.2009 20:38 af Bruger #11375
Afprøver du på din egen test server nu?

Og har du adgang til den tmp/ mappe hvor i PHP som default gemmer session filer.


Omkring sessions, så er det sådan at du kan gemme oplysninger omkring sessions i en database hved hjælp af funktionen "session_set_save_handler()

Dokumentation: http://se2.php.net/manual/en/function.session-set-save-handler.php


Jeg kører både min egen test server med xampp pakken der kører PHP5, og har en test server online ved Dan domain også at jeg tester på. Så ja vil gå ud fra jeg har adgang til tmp mappen, jeg forstår dog ikke hvor du vil hen med det?

Hvad vil du have jeg skal prøve med session_set_save_handler()? jeg skal jo ikke gemme mine session oplysninger. jeg henter kundens session id ind i en variabel på siden som jeg derved bruger til at oprette en ny række i min indkøbskurv tabel i databasen som har en ct_session_id colonne hvor session id'en bliver skrevet ind. Når varen så er lagt ind så går indkøbskurven ind i den tabel og henter de produkter som er i kurven og som matcher den kundes session id. det er det eneste jeg bruger min session til, og som sagt det hele virkede før jeg ændrede disse to linjer kode:
Fold kodeboks ind/udKode 

til at stå øverst i mit dokument inden php scriptet eller noget andet begynder.

Kan ikke forstå hvad du så vil have jeg skal prøve med session_set_save_handler()


*Tilføjelse

Jeg har siddet og bakset frem og tilbage med det i nat og pludselig virkede det som det skulle...
Lige indtil jeg lukkede firefox så ville jeg lige se om det så også virkede i Internet explorer også det gjorde det ikke, og da jeg så gik tilbage til firefox virkede det heller ikke mere der...
Jeg har kikket koderne igennem 100 gange og jeg kan ikke finde 1 lille tegn der er forkert, og det frustrere mig endnu mere det virker 1 sekund og så det næste ikke...

Men den opføre sig dog anerledes nu for nu tager den mig til cart.php og viser varen der, men opdatere du siden eller i det hele taget foretager dig noget som helst forsvinder alt igen. men meningen er jo den skal gå til cart.php så åbne cart-functions.php og køre addToCart functionen og til sidst smide en tilbage til hvor du var da du trykkede køb.
Derved kan det jo godt virke som om der er noget der forstyrre koden undervejs siden den pludselig stopper i cart.php og bliver der.




Indlæg senest redigeret d. 28.06.2009 05:53 af Bruger #15117
skrive session_start i toppen af produkt_visning.php


Har prøvet overhovedet ingen forskel, uanset hvordan jeg gør og hvor mange sider jeg gør det i, og forresten kan jeg ikke tilføje session start her
Fold kodeboks ind/udKode 

For sætter jeg den før doctype vil internet explorer ikke vise mit design ordenligt.
Har dog prøvet at sætte den øverst og så køre den i firefox men det hjalp ikke noget på indkøbskurven.

Den bliver ved med at skifte mellem at virke også pludeslig uden at ændre noget virker det ikke igen.
Der er noget mystisk noget ved det her.



Indlæg senest redigeret d. 28.06.2009 14:12 af Bruger #15117


Godt så....


Rune, vi skal lave en lille test...

Du skal fjerne alle det session filer som der etv. måtte være i mappen /tmp/ i din xampp root mappe.

Når du har gjord det, så stat din applikation og begyn at handle som en kunde og se om din applikation stadigvæk laver fejl.

Hvis den fortsat lave fejl så se om PHP faktisk opretter nye sessions (dvs. filer).

Hvis PHP ikke opretter nye filer så er det din applikation som er problemet og meget sansynligt ikke en PHP bug.

Det er blot det vil skal teste lige til at state med - just to be sure. ;-)



du kunne også prøve at skrive session_start i både
produkt_visning.php og cart.php



du kunne også prøve at skrive session_start i både
produkt_visning.php og cart.php


Det har jeg prøvet, faktisk så kører alle mine dokumenter med session_start() i toppen lige nu har ikke ændret det tilbage igen fra jeg legede med det tidiligere



Indlæg senest redigeret d. 28.06.2009 19:00 af Bruger #15117
<< < 12 > >>
t