nkrantzMedlem sedan apr. 2002755 inlägg Hej!
Kör en version 4.1.0 av PHP och session_regenerate_id() finns inte i denna versionen. Enligt manualen skall man kunna sätta ett nytt session_id med följande kod:
session_id($newSessionID);
Mitt problem uppstår då jag gör en inloggning. Inloggningen funkar så att jag fyller i användarinfo, går till en sida som först kollar användarinfo, om allt är ok så skall den skapa en session i databasen. Scriptet kollar om session_id finns i databasen, om det gör det så registreras ett nytt session_id och sätt mha koden ovanför och informationen sparas i databasen.
Så långt allt bra.
Men problemet är att sidan som tar emot information och sedan skickar vidare om inloggningen funkar använder en header() för att skicka vidare och det verkar som om informationen försvinner för när jag via print_r($_SESSION) kollar informationen i sessionen finns inte informationen lagrad. Dessutom om jag skiver ut session_id() så är det inte samma session_id som lagrades i databasen.
Det verkar alltså som om att trots jag sätter ett nytt session_id så när jag kommer tillbaka till inloggningssidan så tror PHP att den skall köra på det gamla session_id.
Lång förklaring ser jag nu, men är det någon som har ett tips? Jag testade med fredde mannens header ("Location: blaj?".$SID); men det funkade inte.
Just det, jag har session_start i en includefil som hämtas hem först av allt, kan detta vara problemet?
// Nippe
MatteMedlem sedan aug. 20002 970 inlägg Om jag minns rätt så måste du sätta namnet före session_start(), annars skapas ju en session med ett slumpmässigt namn.
Detta bör gälla även andra inställningar som man vill göra på sessionshanteringen. Tror de måste sättas före session_start().
nkrantzMedlem sedan apr. 2002755 inlägg Jo, men namnet sätts innan session_start() och det är inte det jag har problem med. Men du kanske menar att det är session_id som skall sättas innan session_start() skall testa det!
nkrantzMedlem sedan apr. 2002755 inlägg Nope, funkade inte det heller.
MatteMedlem sedan aug. 20002 970 inlägg I vilket fall måste du köra session_id() före session_start().
manualen skrev:
string session_id ( [string id])
session_id() returns the session id for the current session.
If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose. Depending on the session handler, not all characters are allowed within the session id. For example, the file session handler only allows characters in the range a-z, A-Z and 0-9!
http://se.php.net/manual/en/function.session-id.php
nkrantzMedlem sedan apr. 2002755 inlägg Ah, det hade jag faktiskt missat :r
Men då blir det problem eftersom jag har session_start i en includefil och vill sätta mitt session_id längre ner i koden.
Jag löste det på ett annat sätt (inte direkt så jag ville, men det funkar) och det var att inte använda mig av redirect.
Tack för hjälpen!!
// Nippe