diff options
| author | David <ottodavid@gmx.net> | 2014-09-04 19:45:25 +0200 | 
|---|---|---|
| committer | David <ottodavid@gmx.net> | 2014-09-04 21:24:48 +0200 | 
| commit | c6abc59438d05e50115bd29388cd4521b51c9c1f (patch) | |
| tree | 6c95433fc2168fb9d151f7b8b96d3b4ffd6317bc | |
| parent | bb2ae8c583c1f1efd7c6ba4100cd824ea0739f5b (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.php | 5 | ||||
| -rw-r--r-- | tests/unit/Web/THttpSessionTest.php | 30 | 
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 +} | 
