FAQ |
Kalender |
2006-03-07, 21:23 | #1 | ||
|
|||
Flitig postare
|
Jag startade en relaterad tråd ( http://www.webmasternetwork.se/f12t12644.html ) för några dagar sen, men eftersom situationen har förändrats lite tyckte jag att det var bäst att skapa en ny tråd.
Problemet är alltså att för ca två månader sen började mitt kundkorgsscript (PHP) tappa minnet. Folk kan bara lägga till en enda grej och gå direkt till kassan. Försöker de lägga till fler saker raderas den föregående. Det går inte heller att ändra kvantitet för då får de ett felmeddelande om cookies, eller så töms korgen. Det verkar alltså som att cookies inte sätts som de ska, men det märkligaste är att det bara drabbar IE-användare (alla versioner, vad det verkar). Jag trodde först att det var en Windows-uppdatering som orsakat detta, men samma fel uppstår på en dator som inte har uppdaterats på åratal. Scriptet i sig har jag inte rört på länge (långt innan detta hände). Nån som har en aning om var jag ska börja felsöka? Det måste nästan vara något med servern (Apache/Linux) i sig, men vad kan orsaka att cookies inte sätts i IE när det funkar perfekt i Firefox? Jag har förstås startat om servern. Som jag nämnde i den andra tråden går det inte att kontakta killen som har utvecklat scriptet. Tack på förhand! Alla teorier är välkomna. |
||
Svara med citat |
2006-03-07, 23:16 | #2 | ||
|
|||
Har WN som tidsfördriv
|
Jag tittade på sidan lite snabbt. Genom Emetrix gick det bra för min IE. Kunna fylla på, ändra osv. Inga problem där.
Går man genom Paypal blir det där emot problem med IE, precis som du skriver. Utan att ha sett kod mm skulle jag tolka det som problemmet ligger i "/portal/cart.php". Den sidan har problem med att lagra, eller möjligen, läsa dina kakor genom IE. Visa koden från den sidan så lär du säkert få hjälp utav dom goda kunskaperna som finns här på WN. |
||
Svara med citat |
2006-03-08, 06:35 | #3 | ||
|
|||
Medlem
|
Jan är inne på rätt spår, det är cookies som kommer på avvägar.
Om man väljer att uppdatera antalet produkter i varukorgen så ser den cookie som Firefox skickar tillbaka till din server ut så här: Cookie: INICart=1; Cart_ID=123456789; Currency=USD\r\n Om man använder IE ser den ut så här: Cookie: Currency=USD\r\n En variabel som scriptet använder för att kontrollera om cookies är påslagna i användarens webläsare (gissar jag) och id-nummret för den varukorg man använder kommer alltså inte med i svaret från IE till din server. Resultatet av det blir att scriptet inte vet vilken varukorg som man vill ändra och man får upp det där tråkiga meddelandet. Så vad beror då detta på? Vi återgår till att se hur din server skickade cookie-värdena till min webläsare. De såg ut så här: Set-Cookie: INICart=1; expires=Wed, 08-Mar-06 04:17:06 GMT; path=/ Set-Cookie: Cart_ID=123456789; expires=Wed, 08-Mar-06 04:17:06 GMT; path=/ Set-Cookie: Currency=USD; expires=Wed, 15-Mar-06 01:17:06 GMT; path=/ Och här klarnar allt. Expire-värdena för INICart och Cart_ID är satta till en tidpunkt som vi redan passerat. IE anser att värdena inte är relevanta längre och skickar dem därför inte i retur till din server. För Currency är expire-värdet dock korrekt satt till en tidpunkt i framtiden och skickas alltså till servern. Och hur rättar man då till det då. Först och främst, kontrollera om klockan i din server går rätt. Lite långsökt eftersom expire-värdena skiljer sig åt så pass mycket mellan INICart/Cart_ID och Currency, men att kontrollera det kostar ingenting. Mest troligt behöver scriptet uppdateras lite så att expire-värdena sätts korrekt. Det kan antagligen vem som helst som skrivit mer än 100 rader PHP-kod fixa på fem minuter. Har du inte någon sån i närheten så kan jag göra det om du skickar scriptet till mig. |
||
Svara med citat |
2006-03-08, 09:16 | #4 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2006-03-08, 11:14 | #5 | ||
|
|||
Nykomling
|
Ja problemet verkar tidsrelaterat, serverns klocka är felinställd.
Skripttillverkaren tycks ha lagt in en 3-timmars gräns i dom två kakorna som IE inte tar emot. Eftersom serverns klocka är 5 timmar (GMT) före vår tidszon så betraktar IE kakorna som inaktuella. (skriptet behöver troligen inte ändras, kakorna ska inte ligga kvar länge). Så varför fungerar det i Fx och Netscape (som sätter rätt datum i kakorna, trots att serverns datum är fel)? Kanske använder Fx/NS någon mer information om servern när kakans datum är utgången (tex var servern är geografiskt placerad), just för att kompensera för sådana här problem? Det är inte helt ovanligt att klientens klocka är felställd, vilket kan orsaka samma problem. BTW, det verkar vara många som har olika typer av problem med det skriptet (eliteweaver). Tydligen säljs skriptet fortfarande, men folk får ingen support och inga svar på sina mejl. |
||
Svara med citat |
2006-03-08, 12:37 | #6 | ||
|
|||
Flitig postare
|
Tusen tack för alla svar! Jag uppskattar det verkligen.
Serverklockan gick mycket riktigt fel och efter att ha ställt fram den några timmar funkar det bra här. Gissa om jag är glad och lättad. Helt otroligt att det var en sån enkel grej som orsakade allt strul. Det känns faktiskt riktigt pinsamt. Ni anar inte vad jag har slitit med detta, men allt är ju lätt när man kan det... Nu återstår att klura ut vilken tidsinställning som är den optimala. Får be några kunder ute i världen testa. Andrres, jo det är många som har problem med detta script. Med det kostade bara $49 och har funkat perfekt i två år (och förhoppningsvis ett bra tag framöver nu när detta är löst), så det är OK. Det är faktiskt ett rätt bra script, trots sina brister. Synd att han verkar ha övergett det. |
||
Svara med citat |
2006-03-08, 15:06 | #7 | ||
|
|||
Flitig postare
|
Ville bara tillägga att nu har jag hört från en kund i Japan och en i USA, och det funkar perfekt även där. Så skönt! Tack än en gång för all hjälp.
|
||
Svara med citat |
2006-03-09, 08:19 | #8 | |||
|
||||
Mycket flitig postare
|
Citat:
Så du menar att de manuellt sätter 3 kakor med id för "cart"-en? Så varje gång när de vill spara basketen i browsern, måste dem först spara självaste basketen någonstans (förmodligen SQL), sen hämta id-t, lägga den i kakan, spara kakan. När de vill läsa den, så måste de hämta kakan, läsa id, slå upp i SQL, bygga basketen igen för att kunna använda den? När det räcker att göra $_SESSION['basket']=$mybasket; ? Jadu, det är märkliga saker det där. Börjar bli nästan nyfiken på att läsa lite av deras kod. |
|||
Svara med citat |
2006-03-09, 11:22 | #9 | ||
|
|||
Flitig postare
|
Zoran, har hört många säga att scriptet är rätt dåligt skrivet (rörigt m.m.), så säkert var det nåt av det första han gjorde. Hade det inte inte varit så billigt (och om det hade funnits liknande alternativ) hade jag aldrig köpt det, men det har som sagt funkat alldeles utmärkt bortsett från det här nu med cookies, som är fixat tack vare er här ovan.
Ser att du mest håller på med Java. Kan du PHP också? Cookies är ju inte det bästa att använda, så för min del får du så gärna ta en titt på det om du vill! |
||
Svara med citat |
2006-03-09, 11:55 | #10 | ||
|
|||
Nykomling
|
Helena:
Citat:
zoran: I detta fall har man valutavalet i en separat kaka som ligger kvar ett tag (det är sannolikt att kunden vill använda samma valuta vid ett återbesök). Men det finns säkert utrymme för optimeringar, som i dom flesta skript (inkl mina egna) Helena igen: Det ligger nåt i uttrycket "if it's not broken don't fix it". Det blir nästan alltid en massa oväntade problem om man börjar rota i ett fungerande system, särskilt om koden är "incomprehensible" som någon skrev i ett annat forum. Men det är klart, man får ju väga för- o nackdelar mot varandra. |
||
Svara med citat |
Svara |
|
|