- Fixed a problem within key normalization which was wrongly removing dots (instead of commas) and also missing semicolon and equals

This commit is contained in:
Dave Mc Nicoll 2024-12-06 14:01:25 +00:00
parent d688a4c49d
commit 17a83db6c2
1 changed files with 6 additions and 4 deletions

View File

@ -32,7 +32,7 @@ class Cookie {
* @return boolean * @return boolean
*/ */
public function set( public function set(
?string $name, ?string $key,
?string $value = null, ?string $value = null,
?int $expires = null, ?int $expires = null,
?string $path = null, ?string $path = null,
@ -47,9 +47,11 @@ class Cookie {
return false; return false;
} }
$key = $this->normalizeKey($key);
$expires = ! $expires ? 0 : time() + (int) $expires; $expires = ! $expires ? 0 : time() + (int) $expires;
$_COOKIE[$name] = $value; $_COOKIE[$key] = $value;
$options = [ $options = [
'expires' => $this->options['expires'] ?? ( $expires ?: 0 ), 'expires' => $this->options['expires'] ?? ( $expires ?: 0 ),
@ -64,7 +66,7 @@ class Cookie {
$value = sha1($this->secureHash . $value . $this->secureHash) . "|$value"; $value = sha1($this->secureHash . $value . $this->secureHash) . "|$value";
} }
return $raw ? setrawcookie($name, $value ?: "", $options) : setcookie($name, $value ?: "", $options); return $raw ? setrawcookie($key, $value ?: "", $options) : setcookie($key, $value ?: "", $options);
} }
/** /**
@ -161,6 +163,6 @@ class Cookie {
protected function normalizeKey(string $key) : string protected function normalizeKey(string $key) : string
{ {
return str_replace(['.', ' ',], '_', $key); return str_replace([',', ';', ' ', '='], '_', $key);
} }
} }