Avatar billede dallan2007 Nybegynder
28. februar 2013 - 11:20 Der er 12 kommentarer og
1 løsning

Safari mister sessionen?

Hejsa,

Jeg er rendt ind i et træls problem hvor safari (5.1.7) mister sessionen efter at kunden bliver tilbagestilt fra betalingsmodulet.

Dvs. følgende sker:

1) Kunden lægger i kurven og bladre rundt på websiden som normalt. Kunden bruger sessioner uden problemer hele vejen.

2) Kunden går til checkout og vælger betaling via dankort.

3) Kunden bliver viderestilet til betalingsmodulet og betaler uden problemer.

4) Kunden bliver efterfølgende viderestil til tak.php, men eftersom sessionen nu er tabt kan systemet ikke smide en emailkvittering eller skriv "tak for bestilling". Dvs. kunden ser slet ikke tak.php, men bliver øjeblikkelig viderestilt til kurv.php med en fejlmelding omkring manglende varer i kurven (sker pga. sikkerhedscheck på tak.php som kræver en aktiv session).

Er der et fix til dette? Jeg kan vel viderestille personen fra betalingsmodulet med en række GET-variabler, men det er dælme træls at skulle implementere når det hele ellers fungere uden problemer.
Avatar billede michael_stim Ekspert
28. februar 2013 - 11:25 #1
Tror næppe det har noget med Safari at gøre, da en session lægger sig på serveren. Det er højst sandsynligt en kodefejl/tanketorsk der er skyld i det.
Avatar billede erikjacobsen Ekspert
28. februar 2013 - 11:30 #2
Det kan måske ske, hvis du blander adresser som "w w w . dit site . dk" med "dit site . dk" (dvs uden www )
Avatar billede dallan2007 Nybegynder
28. februar 2013 - 11:45 #3
Jeg skal da ikke udelukke, at det er en fejl 40, men:

- korrekt syntaks: http://www.

- sessionen virker som sagt fint i safari så længe personen bliver på vores domæne. Og hvis personen genbestiller efter den fejlslagne bestilling, så går sessionen pludselig fint igennem.

- jeg er ikke den eneste der er rendt ind i dette: http://stackoverflow.com/questions/8284247/php-session-issues-with-safari
Avatar billede michael_stim Ekspert
28. februar 2013 - 11:51 #4
Jeg fandt et link til løsning i dit link:

http://anantgarg.com/2010/02/18/cross-domain-cookies-in-safari/
Avatar billede dallan2007 Nybegynder
28. februar 2013 - 12:06 #5
Takker, men den løsning ser ud til at være gennemhullet med fejl iflg. kommentarerne.
Avatar billede michael_stim Ekspert
28. februar 2013 - 12:16 #6
Der er lige så mange der siger det fungerer, plus der er lidt tillægskode hist og her. Kan desværre ikke hjælpe dig mere, da jeg ikke har safari installeret.
Avatar billede erikjacobsen Ekspert
28. februar 2013 - 12:59 #7
Det jeg mente var, at hvis brugeren klikke rundt med "w w w. dit site. dk", går til betalingstjenesten, som redirekter tilbage til "dit site . dk" (uden www).    (Eller også er det omvendt)

Så vil nogle browsere - vistnok - ikke genkende den sessions-cookie, der er sat.

Er det noget du kan undersøge?
Avatar billede dallan2007 Nybegynder
28. februar 2013 - 13:26 #8
Splitte mine bramsejl Hr. Jacobsen! De har helt ret!

De gange jeg selv havde testet var det netop med domæne.com og så med viderestilling til www.domæne.com. Jeg har så netop lavet 2 test med www.domæne.com fra starten, og nu kan den huske sessionen efter betalingen.

Årsag fundet.

Hvad er kuren så? ;)
Avatar billede erikjacobsen Ekspert
28. februar 2013 - 13:42 #9
Det er vigtigt at finde årsagen... Der er vel 2 løsninger:

1) Bliv på "dit site. dk" - mange webhoteller kan automatisk viderestille fra "w ww. dit site.dk" - eller omvendt.

2) Sæt din sessions-cookie til at blive kendt både som www og uden ... et eller andet sted i PHP-opsætningen. Du kan også gøre det på hver PHP side med
http://php.net/manual/en/function.session-set-cookie-params.php
Kig efter "domain" på siden
Avatar billede dallan2007 Nybegynder
28. februar 2013 - 13:43 #10
Jeg prøver at hive fat i vores host - takker ^^ (smid et svar)
Avatar billede dallan2007 Nybegynder
28. februar 2013 - 14:27 #11
[Med lidt simpelt htaccess så virker det nu ^^]
Avatar billede erikjacobsen Ekspert
28. februar 2013 - 19:09 #12
Det er bestemt også en mulighed. Hvad med lige at smide koden ind her?

(Jeg samler slet ikke på point, tak)
Avatar billede dallan2007 Nybegynder
01. marts 2013 - 11:28 #13
Ja god ide:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]
RewriteCond %{HTTP_HOST} !^www.domæne.com$
RewriteRule ^(.*)$ http://www.domæne.com/$1 [R=301]

Denne .htaccess ligger i root, og foruden at påtvinge www, så omdirigere den også alle fejlkald til startsiden.
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