webForumDet fria alternativet

egen-definierad objekt lagras ej i session

PHPur PHP

4 svar · 282 visningar · startad av jme

jmeMedlem sedan maj 20012 237 inlägg
#1

Hej!

Varför detta?

För att ändra på en produkts information så väljer man produkten och trycker på länken "edit". När man trycker på den länken så hämtas varans information som sedan visas i <input> taggar.

Väljer man submit så skickas förfrågan till en s k "handler" som kontrollerar, ifall alla fält är ifyllda osv. Är allt ok, så lagra ändringarna. Är t ex ett fält tomt, så returneras användaren till samma sida.

Nu har jag det så att informationen lagras i ett klass-objekt jag själv skapat. Objektet lagaras i sessionen med $_SESSION['product'] = $product; // $product är objektet

Det fungerar utmärkt då användaren trycker på "edit" knappen, för att kunna ändra på produkten. Det fungerar också bra, ifall användarens uppdaterade information är korrekt. Men det strular till sig om användaren lämnar ett fält tomt och försöker spara ändringarna: "handlern" ser att ett fält är tomt och returnerar förfrågan tillbaks, men då finns inte $produkt i session längre, eller den fins där men den är tom.

Jag testade med att sätta $SESSION['bla'] = "bla". Den finns då kvar där. Varför försvinner mitt objekt?

pimmeMedlem sedan sep. 20011 086 inlägg
#2

Du måste inkludera filen som innehåller klassen (antar att det är en annan fil). Du måste även inkludera den innan du kör session_start() för annars blir den korrupt och tas antagligen bort.

jmeMedlem sedan maj 20012 237 inlägg
#3

Nu tror jag att jag löste problemet.

Kan man på nåt sätt ta ut värdet i HTTP_X_VARS, utan att veta, om det är satt med POST, eller GET? Detta är vad som var felet.

Först sätter jag värdet med GET och senare med POST, men när jag tar fram värdet så görs det just nu endast med GET.

Kent.JMedlem sedan aug. 2001153 inlägg
#4

Jag gissar här men... objektet behövs inte "serializeras" först? Eller sker sånt automatiskt nuförtiden?

jmeMedlem sedan maj 20012 237 inlägg
#5

Nu löste jag detta. Ännu en gång, hehe.

Felet låg annanstans. Jag hade glömt att ge en metod ett värde som parameter. Serialisering av objekt gör man, om man vill spara objektet t ex på hårddisken, eller skicka över nätet.

136 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)