Cookie::normalize_attribute( string $name, string|int|bool $value ): mixed

In this article

Parse an individual cookie attribute

Description

Handles parsing individual attributes from the cookie values.

Parameters

$namestringrequired
Attribute name
$valuestring|int|boolrequired
Attribute value (string/integer value, or true if empty/flag)

Return

mixed Value if available, or null if the attribute value is invalid (and should be skipped)

Source

protected function normalize_attribute($name, $value) {
	switch (strtolower($name)) {
		case 'expires':
			// Expiration parsing, as per RFC 6265 section 5.2.1
			if (is_int($value)) {
				return $value;
			}

			$expiry_time = strtotime($value);
			if ($expiry_time === false) {
				return null;
			}

			return $expiry_time;

		case 'max-age':
			// Expiration parsing, as per RFC 6265 section 5.2.2
			if (is_int($value)) {
				return $value;
			}

			// Check that we have a valid age
			if (!preg_match('/^-?\d+$/', $value)) {
				return null;
			}

			$delta_seconds = (int) $value;
			if ($delta_seconds <= 0) {
				$expiry_time = 0;
			} else {
				$expiry_time = $this->reference_time + $delta_seconds;
			}

			return $expiry_time;

		case 'domain':
			// Domains are not required as per RFC 6265 section 5.2.3
			if (empty($value)) {
				return null;
			}

			// Domain normalization, as per RFC 6265 section 5.2.3
			if ($value[0] === '.') {
				$value = substr($value, 1);
			}

			return $value;

		default:
			return $value;
	}
}

User Contributed Notes

You must log in before being able to contribute a note or feedback.