From: Roland Häder Date: Sat, 14 Jun 2008 20:35:24 +0000 (+0000) Subject: Cookies temporary fixed X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=93d62aa3d9f643bb82946e7fdfb07d313eeb2fa7;p=shipsimu.git Cookies temporary fixed --- diff --git a/inc/classes/main/response/class_HttpResponse.php b/inc/classes/main/response/class_HttpResponse.php index 5a21d89..f4a3d50 100644 --- a/inc/classes/main/response/class_HttpResponse.php +++ b/inc/classes/main/response/class_HttpResponse.php @@ -35,6 +35,11 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { */ private $responseHeaders = array(); + /** + * Cookies we shall sent out + */ + private $cookies = array(); + /** * Body of the response */ @@ -163,15 +168,25 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { // General header for no caching $this->addHeader('Expired', $now); // rfc2616 - Section 14.21 $this->addHeader('Last-Modified', $now); - $this->addHeader('Cache-Control:', 'no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 - $this->addHeader('Pragma:', 'no-cache'); // HTTP/1.0 + $this->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 + $this->addHeader('Pragma', 'no-cache'); // HTTP/1.0 // Define the charset to be used //$this->addHeader('Content-Type:', sprintf("text/html; charset=%s", $this->getConfigInstance()->readConfig('header_charset'))); foreach ($this->responseHeaders as $name=>$value) { header("{$name}: {$value}"); - } + } // END - foreach + + // Send cookies out? + if (count($this->cookies) > 0) { + // Send all cookies + $cookieString = implode(" ", $this->cookies); + header("Set-Cookie: {$cookieString}"); + + // Remove them all + $this->cookies = array(); + } // END - if } // Are there some error messages? @@ -243,20 +258,28 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { // @TODO Encryption of cookie data not yet supported } // END - if - // Set the cookie - //echo $cookieName."=".$cookieValue. - // ", expire=".(time()+$this->getConfigInstance()->readConfig('cookie_expire')). - // ", path=".$this->getConfigInstance()->readConfig('cookie_path'). - // ", domain=".$this->getConfigInstance()->readConfig('cookie_domain'). - // ", ssl=".$this->getConfigInstance()->readConfig('cookie_ssl'); - setcookie( - $cookieName, - $cookieValue, - (time() + $this->getConfigInstance()->readConfig('cookie_expire')), - $this->getConfigInstance()->readConfig('cookie_path'), - $this->getConfigInstance()->readConfig('cookie_domain'), - $this->getConfigInstance()->readConfig('cookie_ssl') - ); + // For slow browsers set the cookie array element first + $_COOKIE[$cookieName] = $cookieValue; + + // Get a config entries + $expires = (time() + $this->getConfigInstance()->readConfig('cookie_expire')); + $path = $this->getConfigInstance()->readConfig('cookie_path'); + $domain = $this->getConfigInstance()->readConfig('cookie_domain'); + + setcookie($cookieName, $cookieValue, $expires); + // TODO Why are these parameters conflicting? + //, $path, $domain, (isset($_SERVER['HTTPS'])) + return; + // TODO This will send only one cookie out, the first one. + + // Now construct the full header + $cookieString = $cookieName . "=" . $cookieValue . "; "; + $cookieString .= "expires=" . date("D, d-F-Y H:i:s", $expires) . " GMT"; + // TODO Why are these parameters conflicting? + // $cookieString .= "; path=".$path."; domain=".$domain; + + // Set the cookie as a header + $this->cookies[$cookieName] = $cookieString; } /** @@ -286,9 +309,6 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { $url = $this->getConfigInstance()->readConfig('base_url') . "/" . $url; } // END - if - // Clean response headers - $this->resetResponseHeaders(); - // Add redirect header $this->addHeader("Location", $url); diff --git a/inc/config.php b/inc/config.php index 02302f2..d1b71f6 100644 --- a/inc/config.php +++ b/inc/config.php @@ -222,7 +222,7 @@ $cfg->setConfigEntry('post_registration_action', "LoginAfterRegistrationAction") $cfg->setConfigEntry('user_class', "User"); // CFG: COOKIE-EXPIRE -$cfg->setConfigEntry('cookie_expire', 60*60*2); // Two hours! +$cfg->setConfigEntry('cookie_expire', (60*60*2)); // Two hours! // CFG: COOKIE-PATH $cfg->setConfigEntry('cookie_path', dirname($_SERVER['SCRIPT_NAME']) . "/");