Cookie::path_matches( string $request_path ): boolean

In this article

Check if a cookie is valid for a given path

Description

From the path-match check in RFC 6265 section 5.1.4

Parameters

$request_pathstringrequired
Path to check

Return

boolean Whether the cookie is valid for the given path

Source

public function path_matches($request_path) {
	if (empty($request_path)) {
		// Normalize empty path to root
		$request_path = '/';
	}

	if (!isset($this->attributes['path'])) {
		// Cookies created manually; cookies created by Requests will set
		// the path to the requested path
		return true;
	}

	if (is_scalar($request_path) === false) {
		return false;
	}

	$cookie_path = $this->attributes['path'];

	if ($cookie_path === $request_path) {
		// The cookie-path and the request-path are identical.
		return true;
	}

	if (strlen($request_path) > strlen($cookie_path) && substr($request_path, 0, strlen($cookie_path)) === $cookie_path) {
		if (substr($cookie_path, -1) === '/') {
			// The cookie-path is a prefix of the request-path, and the last
			// character of the cookie-path is %x2F ("/").
			return true;
		}

		if (substr($request_path, strlen($cookie_path), 1) === '/') {
			// The cookie-path is a prefix of the request-path, and the
			// first character of the request-path that is not included in
			// the cookie-path is a %x2F ("/") character.
			return true;
		}
	}

	return false;
}

User Contributed Notes

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