Gå til innhold

Session_destroy() logger meg ikke ut. Hvorfor?


Anbefalte innlegg

Skrevet

Hei

 

Driver med et forum, og man skal jo selvfølgelig få logge ut (hihi), og da bruker jeg denne koden på logout.php:

 

<?php
session_start();
session_destroy();
// header('Location: /index2.php?p=login');
// Skal ta bort slashene fra linja over, men jeg skal ha de der forløpig
?>

 

Hvorfor blir jeg ikke logget ut da? Har aldri hatt dette problemet før :s

Videoannonse
Annonse
Skrevet

Det er nok heller det at forumet ditt ikke krever at du er LOGGET INN?

Eller at du får opp en cachet utgave, og derfor ser ut som du er innlogget?

 

Hvordan sjekker du om en bruker er innlogget?

Skrevet (endret)

Først logger man inn, og hvis man har riktig brukernavn og passord:

$_SESSION['navnpasession'] = true;

 

Og så trykker man på "Log out" og da skal man egentlig bli logget ut, men det blir man ikke.. Cachet utgave? Har oppdatert sida som sjekker om man er pålogget/avlogget flere ganger..

 

Noe mer som trengs å vite?

 

Edit:

Jo da, forumet sjekker om man er logget inn. Hvis man er det, får man opp en meny, hvis man ikke er det så får man opp en annen meny.

Endret av Anders-Moen
Skrevet

Prøv å sett inn en "var_dump($_SESSION);" på siden der du sjekker om man er innlogget. Da skal du få frem noe når man er innlogget, men ikke etter at du har kjørt session_destroy();

Skrevet

Dette er logg ut rutina jeg bruker, fant den sikkert på phpbuilder.com en gang tror jeg

PHP
<?php

 

 // Unset all of the session variables.

 $_SESSION = array();

 

 // If it's desired to kill the session, also delete the session cookie.

 // Note: This will destroy the session, and not just the session data!

 if (isset($_COOKIE[session_name()])) {

 setcookie(session_name(), ''time()-42000'/');

 }

 

 // Finally, destroy the session.

 session_destroy();

 echo '<meta http-equiv="refresh" content="0;url=index.php" />';

?>

Skrevet (endret)
Sorry, men jeg prøvde det og.

unset($_SESSION['navnet_pa_sessionen']);

9276786[/snapback]

 

prøv:

PHP

<?php

unset($_SESSION);

?>

 

da tømmer du hele sesjonen, men det er vel strengt tatt det du vil ved en utlogging.

Endret av magikern
Skrevet
Sorry, men jeg prøvde det og.

unset($_SESSION['navnet_pa_sessionen']);

9276786[/snapback]

 

prøv:

PHP

<?php

unset($_SESSION);

?>

 

da tømmer du hele sesjonen, men det er vel strengt tatt det du vil ved en utlogging.

9277200[/snapback]

 

Det gir jo samme effekt som "session_destroy ()" - som ikke funker i Anders-Moens tilfelle ;)

Skrevet

kan se ut som det muligens er en bug i php (med mindre jeg har oversett noe her), testa dette:

 

PHP

<?php

class test

{

function __construct ()

{

session_start();

echo 'Initialize session.';

}

 

function fillSession () {

$_SESSION['random']=rand(1,100);

}

 

function toString ()

{

echo "<pre>";

print_r($_SESSION);

echo "</pre>";

}

 

function __destroy ()

{

echo session_destroy()."";

echo 'Session destroyed.';

}

}

 

$test = new test();

$test->fillSession();

$test->toString();

 

$test->__destroy();

 

$test->toString();

?>

 

$test->toString();

printer fortsatt ut random variabelen etter $test->__destroy()

men hvis jeg endrer __destroy() til

PHP

<?php

function __destroy ()

{

echo session_destroy()."";

unset($_SESSION);

echo 'Finally, destroy the session.';

}

?>

 

så tømmes $_SESSION.

Skrevet

og der fant jeg ihvertfall ut hvorfor den eksempel koden min oppførte seg som den gjorde, kanskje det gir en pekepinn til trådstarter:

session_destroy(); kjører ikke unset($_SESSION); med en gang, men derimot når scriptet er gjennomkjørt.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...