webForumDet fria alternativet

sessionsfråga

3 svar · 264 visningar · startad av lejzer

lejzerMedlem sedan juni 2002263 inlägg
#1

Hej!

Har 2 små frågor. För att kolla om en session är aktiv så kollar jag med hjälp av isset. Är detta rätt?

För när jag ska döda en session med följande:
session_start();
unset($_SESSION['sessid']);
unset($_SESSION['remoteip']);

så kommer jag ändå in på sidan jag skyddar. Gör jag fel på min kontroll eller är det fel sätt att döda sessionen på? Kontrollen ser ut så här:

if (!isset($_SESSION['sessid']) | $_SESSION['remoteip'] != $_SERVER['REMOTE_ADDR']) {

	header("location: ./index.php");

}

Tack på förhand

Kan tillägga att det fungerar om jag skriver följande istället för unset:

$_SESSION['sessid'] = "";

giikMedlem sedan mars 2002112 inlägg
#2

I mina filer har jag så här och det funkar bra för mig tycker jag. Kommer inte åt nånting sedan i alla fall...

<?
session_start();
session_unset();
session_destroy();
?>

Hoppas det löser sig för dig i alla fall! :)

MatteMedlem sedan aug. 20002 975 inlägg
#3

Kan tillägga att det fungerar om jag skriver följande istället för unset:

$_SESSION['sessid'] = "";

Det var intressant. För det finns en bug i PHP (ska bli fixad i 4.3) som gör att unset på en sessionsvariabel fungerar inte när register_globals=On.

Själv använder jag, i det fallet, för att ta död på en session:

session_unset();
session_destroy();

session_destroy() använder jag i vilket fall för att ta död på sessionen.

lejzerMedlem sedan juni 2002263 inlägg
#4

Tack för era svar. Lyckades lösa det på följande sätt för att även döda sessionsid:et och skapa ett nytt:

session_start();
session_destroy();
unset($_COOKIE[session_name()]);
session_start();

Tack ändå!

249 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
121 ms — hämta statistik (db)
126 ms — hämta tråd, inlägg och bilagor (db)