From: Roland Häder <roland@mxchange.org>
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']) . "/");