summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid <ottodavid@gmx.net>2014-09-04 19:45:25 +0200
committerDavid <ottodavid@gmx.net>2014-09-04 21:24:48 +0200
commitc6abc59438d05e50115bd29388cd4521b51c9c1f (patch)
tree6c95433fc2168fb9d151f7b8b96d3b4ffd6317bc
parentbb2ae8c583c1f1efd7c6ba4100cd824ea0739f5b (diff)
Fix #531
Since PHP 5.3.3 the default value for session.use_only_cookies is 1, so we need to set that to 0 when CookieMode is "None"
-rw-r--r--framework/Web/THttpSession.php5
-rw-r--r--tests/unit/Web/THttpSessionTest.php30
2 files changed, 31 insertions, 4 deletions
diff --git a/framework/Web/THttpSession.php b/framework/Web/THttpSession.php
index 79c6e6df..b96a977e 100644
--- a/framework/Web/THttpSession.php
+++ b/framework/Web/THttpSession.php
@@ -297,8 +297,11 @@ class THttpSession extends TApplicationComponent implements IteratorAggregate,Ar
else
{
$value=TPropertyValue::ensureEnum($value,'THttpSessionCookieMode');
- if($value===THttpSessionCookieMode::None)
+ if($value===THttpSessionCookieMode::None)
+ {
ini_set('session.use_cookies','0');
+ ini_set('session.use_only_cookies','0');
+ }
else if($value===THttpSessionCookieMode::Allow)
{
ini_set('session.use_cookies','1');
diff --git a/tests/unit/Web/THttpSessionTest.php b/tests/unit/Web/THttpSessionTest.php
index aca83077..eb1ec4df 100644
--- a/tests/unit/Web/THttpSessionTest.php
+++ b/tests/unit/Web/THttpSessionTest.php
@@ -43,8 +43,32 @@ class THttpSessionTest extends PHPUnit_Framework_TestCase {
throw new PHPUnit_Framework_IncompleteTestError();
}
- public function testSetCookieMode() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ public function testSetCookieModeNone() {
+ $session = new THttpSession();
+ $session->CookieMode = THttpSessionCookieMode::None;
+
+ $this->assertEquals(0, ini_get('session.use_cookies_only'));
+ $this->assertEquals(0, ini_get('session.use_cookies'));
+ $this->assertEquals(THttpSessionCookieMode::None, $session->CookieMode);
+ }
+
+ public function testSetCookieModeAllow() {
+ $session = new THttpSession();
+ $session->CookieMode = THttpSessionCookieMode::Allow;
+
+ $this->assertEquals(0, ini_get('session.use_only_cookies'));
+ $this->assertEquals(1, ini_get('session.use_cookies'));
+ $this->assertEquals(THttpSessionCookieMode::Allow, $session->CookieMode);
+ }
+
+ public function testSetCookieModeAlways() {
+ $session = new THttpSession();
+ $session->CookieMode = THttpSessionCookieMode::Only;
+
+ $this->assertEquals(1, ini_get('session.use_only_cookies'));
+ $this->assertEquals(1, ini_get('session.use_cookies'));
+ $this->assertEquals(0, ini_get('session.use_trans_sid'));
+ $this->assertEquals(THttpSessionCookieMode::Only, $session->CookieMode);
}
public function testSetAutoStart() {
@@ -110,4 +134,4 @@ class THttpSessionTest extends PHPUnit_Framework_TestCase {
public function testOffsetUnset() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-} \ No newline at end of file
+}