Špatná identifikace session – záměna uživatelů

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

NETTE: 0.9.6

Mám košík v e-shopu implementovaný následovně:

	public function handlePridejDoKosiku() {
		// zjistime si jake ma clovicek ID
		$namespace = Environment::getSession('basket');
		// pokud v něm neexistuje proměnná user, tak mu nové číslo přidělíme
		if (!isset($namespace->user)) {
			$namespace->user = dibi::fetchSingle('SELECT MAX(user)+1 FROM [kosik]');
		}

		$request = Environment::getApplication()->getPresenter()->getRequest();
		$arr = $request->getPost();
		$arr['user'] = $namespace->user;

		dibi::query('DELETE FROM [kosik] WHERE [user]=%i AND [kod_zbozi]=%i LIMIT 1', $arr['user'], $arr['kod_zbozi']);
		if ($arr['mnozstvi'] > 0) {
			dibi::query('INSERT INTO [kosik]', $arr);
		}
	}

Když pak třeba hodinu na daném webu nic nedělám a vrátím se (sessiona na serveru již vypršela), tak v košíku mám nějaké zboží. Pokud se podívám do košíku a do databáze, tak to je košík s největším ID ($namespace->user), který založilo jiné IP.

Košík načítám takto:

	$namespace = Environment::getSession('basket');
	if (!isset($namespace->user)) {
		$this->redirect('Default:default');
	} else {
		$count = dibi::fetchSingle('SELECT COUNT(*) FROM [kosik] WHERE [user]=%i', $namespace->user);
	...

Čeho se chytit? Co dělám špatně?