diff --git a/src/Symfony/Component/HttpFoundation/Session.php b/src/Symfony/Component/HttpFoundation/Session.php index 2553539958..41e066dbb6 100644 --- a/src/Symfony/Component/HttpFoundation/Session.php +++ b/src/Symfony/Component/HttpFoundation/Session.php @@ -153,13 +153,30 @@ class Session implements \Serializable if (false === $this->started) { $this->start(); } + if (array_key_exists($name, $this->attributes)) { unset($this->attributes[$name]); } } + /** + * Clears all attributes. + */ + public function clear() + { + if (false === $this->started) { + $this->start(); + } + + $this->attributes = array(); + } + + /** + * Invalidates the current session. + */ public function invalidate() { + $this->clear(); $this->storage->regenerate(); } @@ -240,7 +257,9 @@ class Session implements \Serializable public function save() { if (true === $this->started) { - $this->attributes['_flash'] = array_diff_key($this->attributes['_flash'], $this->oldFlashes); + if (isset($this->attributes['_flash'])) { + $this->attributes['_flash'] = array_diff_key($this->attributes['_flash'], $this->oldFlashes); + } $this->storage->write('_symfony2', $this->attributes); } } diff --git a/src/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php b/src/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php index 1e32bca09e..5fa4223f58 100644 --- a/src/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php +++ b/src/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php @@ -149,7 +149,6 @@ class NativeSessionStorage implements SessionStorageInterface return; } - // regenerate a new session id once per object session_regenerate_id($destroy); self::$sessionIdRegenerated = true;