Session destroy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
symmetry
Člen | 71
+
0
-

Zdravím, chtěl bych se zeptat, jak docílit zrušení všech a nebo určité session?
Pokud mám session aktivovanu a přejdu například na logout.php
kde mám uvedeno:

<?php
include './libs/nette-0.9-PHP-5.2/Nette/loader.php';

$namespace = Environment::getSession();
$namespace->destroy();
echo '<div class=\"message\">';
echo 'Odhlášní proběhlo úspěšně';
echo '</div>';

?>

Pak dostanu
Uncaught exception ‚InvalidStateException‘ with message ‚Session is not started.‘ atd..

Ale přitom session nastartována je..

Tuší někdo, čím by to mohlo být způsobeno?

Díky za každou radu.

lucass
Člen | 89
+
0
-

Asi to má co společného s životním cyklem. Použil bych spíš signál, ve kterém tu session zrušíš.

Třeba nějak takto (mám to v BasePresenteru):

<?php

	...

	/**
	 * Obsluha signalu pro odhlaseni.
	 *
	 */
	public function handleLogout() {
		$user = Environment::getUser();

		if ($user->isAuthenticated()) {
			$user->signOut();
			$this->flashMessage(_('Byl jste úspěšně odhlášen.'), IFlash::SUCCESS);
		}

		$this->redirect('this');
	}

	...

?>

Editoval lucass (15. 11. 2009 22:34)

Tomik
Nette Evangelist | 485
+
0
-

lucass napsal(a):

(…)Třeba nějak takto (mám to v BasePresenteru): (…)

symmetry nemusí používat Nette MVP.

Tomik
Nette Evangelist | 485
+
0
-

symmetry napsal(a):

(…)

Zkus předtím, než použiješ cokoli z sessions použít if (!$session->isStarted()) $session->start();.

symmetry
Člen | 71
+
0
-

Presne tak jak pise Tomik , zatim MVC nepouzivam.. a
if (!$session->isStarted()) $session->start(); bohuzel problem neresi..

h4kuna
Backer | 740
+
0
-

Do wiki na session ses dival? Pac nevidim zda mas nekde nejaky namespace vytvoreny? Me to pomohlo jak s tim pracova.