Jag har en funktion som ska avgöra om den ska visa ett inloggninsformulär eller en utloggnings knapp. Jag använder
if(!($_SESSION['username'] AND $_SESSION['password'])){
//visar inloggningsformulär
}
else{
//visar logga ut knappen
}
}
Men den uppdateras inte på en gång utan efter jag har loggat in så måste jag uppdatera för att den ska visa logga ut knappen... några idéer på vad som jag kan ha gjort fel?
Ingen som har någon idé? Måste jag gå tillbaka till att göra $loginusername och $loginpassword globala? Det fungerade förut men det ska tydligen inte vara lika bra som att använda $_session['loginusername'] etc...
Använder du session_register() för att registrera sessionsvariabeln blir det mycket riktigt, som du säger, att variabeln placeras i $_SESSION först när du laddar om sida. $_SESSION hämtar upp de variabler som finns i sessionen när du kör session_start(), och i det här fallet hade du inte satt dina variabler än.
Vad manualen säger är att du kan (om register_globals=Off SKA) sätta dina sessionsvariabler direkt med:
$_SESSION['username'] = $username;
Nu kommer de att fungera i skriptet utan att du behöver ladda om sidan.
Detta ska enligt manualen gå att använda när både register_globals är av eller på, men jag har märkt att om man har register_globals på så går det inte att ta bort en enstaka sessionsvariabel med unset($_SESSION['variabel']) utan att avsluta sessionen. Vill man ta bort enstaka sessionsvariabler får man använda session_unregister() istället.
Det är endast om du är i läget att du ska behöva radera enstaka sessionsvariabler, utan att avsluta sessionen, som du behöver använda session_register()/session/unregister() när register_globals är till. Detta är en rapporterad bug som förhoppningsvis ska vara åtgärdad till PHP4.3.