Just nu i M3-nätverket
Jump to content

konstigheter med session_start()


fltman

Recommended Posts

Hej,

förmodligen så missar jag något elementärt men det hela känns konstigt tycker jag. Jag har två installationer av samma system på två windows maskiner, php, mysql och apache.

 

jag har satt en variabel $userstamp och kör bla följande kod:

 

----------------- cut ------------------

echo "userstamp1 : $userstamp<BR>";

session_start();

echo "userstamp2 : $userstamp<BR>";

----------------- cut ------------------

 

 

på den ena maskinen blir outputten mycket riktigt:

 

----------------- cut ------------------

userstamp1 : 6488163

userstamp2 : 6488163

----------------- cut ------------------

 

men på den andra blir det:

 

----------------- cut ------------------

userstamp1 : 6488163

userstamp2 : 9961572

----------------- cut ------------------

 

vad är det som händer och varför blir det så? Jag ser tyvärr ingen lösning.

 

Link to comment
Share on other sites

Det är tyvärr helt omöjligt för oss att hjälpa dig med så lite information...

 

Vad är variabeln $userstamp för något? Har den något med sessionen att göra? Körs det olika versioner av PHP på de två burkarna? Är den ena versionen över 4.1?

 

Posta lite kod så kanske vi kan stå till tjänst! :)

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

[inlägget ändrat 2003-03-25 10:45:49 av Bj0rN]

Link to comment
Share on other sites

i det här fallet är koden strippad maximalt, jag har med andra ord plockat bort allt i det här exemplet för att hitta den plats där usersession krånglar till sig.

 

dvs koden ser ut så här:

 

<?

$usersatmp="6488163";

echo "userstamp1 : $userstamp<BR>";

session_start();

echo "userstamp2 : $userstamp<BR>";

?>

 

 

som du ser så är det inga konstigheter. De bägge maskinerna installerades samtidgt och har samma version av php (4.04).

 

 

 

Link to comment
Share on other sites

Daniel Wahlgren

rova stäng dina öppna sessions och testa igen. Det låter som om du testat tidigare med ettannat värde och den ligger nu registrerad i din session på ena servern.

 

Är Register_Gloals på rekomenderar jag att du tar bort Register_Globals och istället använder dig av

 

session_start();

$_SESSION[userstamp] = "vad du nu vill ha i din session";

 

Detta gör att värden som läggs in i en sessionsvariabel inte ersätter andra variabler.

 

**********

Om spelvåld påverkar unga, hur skulle pacmangenerationen se ut idag?

 

Link to comment
Share on other sites

Du bör uppgradera din PHP version till en senare variant. 4.3.1 är den stabila releasen, men 4.3.2 RC2 finns och snart släpps väl den riktiga versionen av den. Du har alltså halkat efter lite i versionen av din PHP installation.

 

I 4.1 infördes nya sätt att hantera en massa olika variabler och annat, däribland i hur sessioner fungerar. Installera en senare version av PHP och testa att göra som Daniel Wahlgren skriver, använd dig av superglobalerna.

 

Jag tror det Daniel skriver är rätt, du kanske redan har satt ett värde i sessionen som efter att du startar den läggs till på ditt redan befintliga värde i userstamp variabeln eftersom register_globals är påslaget.

 

Om du installerar 4.3.1 så får du tänka om lite i ditt kodande, men du kommer få en mer lättöverskådlig kod som dessutom är säkrare än den du har idag med register_globals on och utan superglobaler.

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...