Martin wrote:
> Når jeg går ind på min side med
http://minserver/minmappe så tilføjes der et
> ?PHPSESSID=(en masse tal og bogstaver) til alle links
> Men hvis jeg går ind med
http://minserver/minmappe/ (altså med det sidste
> '/' med) så er PHPSESSID tingen væk? Hvordan kan det være?
Jeg er ikke sikker på at jeg er helt med på hvad dit problem er... men
her er et skud.
Sessions kan være sat op på to måder:
1) Session-id'et bliver hægtet på alle links på siden (så længe
session-id'et fremgår af URL'en er alt godt, men så snart man fjerner
det bliver man smidt ud af systemet).
2) Session-id'et bliver gemt i en cookie og der bliver ikke tilføjet
noget til alle links. Først når session-cookien bliver slettet bliver
man smidt ud af systemet.
Hvilken af de to muligheder du kører med fremgår af php.ini i linien:
session.use_cookies = 1 (dvs. min server er sat op til mulighed 2)
Så hvis du kører med mulighed 1 og gør følgende:
1) Logger ind (således at alle links på den efterfølgende side er
udstyret med ?PHPSESSID=bla)
2) Loader siden igen (men uden at inkludere session-id'et i URL'en)
.... så kan serveren ikke længere se at du var i gang med en session, så
$_SESSION-arrayet vil være tomt (det bliver oprettet med kaldet til
session_start() men bliver ikke fyldt med nogen værdier fordi du ikke
identificerer en specifik session), og derfor vil
if ( isset($_SESSION['user']) )
evaluere til FALSE (dvs. du er ikke længere logget ind).
Hvis du i stedet bruger session-cookies så vil du være logget ind så
længe cookien lever (dvs. indtil den udløber eller bliver slettet med et
kald til session_destroy()).
Til slut undrer det mig lidt at du bruger $_ENV til at finde ud af om
brugeren er logget ind... hvorfor ikke bare bruge $_SESSION?
Ved succesfuldt login sætter du $_SESSION['user'] til navnet på brugeren
eller 'ja' eller sårn - hvis login fejler så undlader du bare at sætte
$_SESSION['user'] til noget. Når du senere vil tjekke om brugeren er
logget ind spørger du bare på om $_SESSION['user'] er sat (og evt. på
værdien af den):
if ( isset($_SESSION['user']) )
{
// jubii brugeren er logget ind
}
Håber du kan bruge nogle af mine rablerier ovenfor.
/Thomas