protected function parseCookieHeader ($line, $defaultDomain)
    {
        if (!$defaultDomain) {
            throw new CAS_InvalidArgumentException(
                '$defaultDomain was not provided.'
            );
        }

        // Set our default values
        $cookie = array(
            'domain' => $defaultDomain,
            'path' => '/',
            'secure' => false,
        );

        $line = preg_replace('/^Set-Cookie2?: /i', '', trim($line));

        // trim any trailing semicolons.
        $line = trim($line, ';');

        phpCAS::trace("Cookie Line: $line");

        // This implementation makes the assumption that semicolons will not
        // be present in quoted attribute values. While attribute values that
        // contain semicolons are allowed by RFC2965, they are hopefully rare
        // enough to ignore for our purposes. Most browsers make the same
        // assumption.
        $attributeStrings = explode(';', $line);

        foreach ( $attributeStrings as $attributeString ) {
            // split on the first equals sign and use the rest as value
            $attributeParts = explode('=', $attributeString, 2);

            $attributeName = trim($attributeParts[0]);
            $attributeNameLC = strtolower($attributeName);

            if (isset($attributeParts[1])) {
                $attributeValue = trim($attributeParts[1]);
                // Values may be quoted strings.
                if (strpos($attributeValue, '"') === 0) {
                    $attributeValue = trim($attributeValue, '"');
                    // unescape any escaped quotes:
                    $attributeValue = str_replace('\"', '"', $attributeValue);
                }
            } else {
                $attributeValue = null;
            }

            switch ($attributeNameLC) {
            case 'expires':
                $cookie['expires'] = strtotime($attributeValue);
                break;
            case 'max-age':
                $cookie['max-age'] = (int)$attributeValue;
                // Set an expiry time based on the max-age
                if ($cookie['max-age']) {
                    $cookie['expires'] = time() + $cookie['max-age'];
                } else {
                    // If max-age is zero, then the cookie should be removed
                    // imediately so set an expiry before now.
                    $cookie['expires'] = time() - 1;
                }
                break;
            case 'secure':
                $cookie['secure'] = true;
                break;
            case 'domain':
            case 'path':
            case 'port':
            case 'version':
            case 'comment':
            case 'commenturl':
            case 'discard':
            case 'httponly':
                $cookie[$attributeNameLC] = $attributeValue;
                break;
            default:
                $cookie['name'] = $attributeName;
                $cookie['value'] = $attributeValue;
            }
        }

        return $cookie;
    }
protected function parseCookieHeader ($line, $defaultDomain)
    {
        if (!$defaultDomain) {
            throw new CAS_InvalidArgumentException(
                '$defaultDomain was not provided.'
            );
        }

        // Set our default values
        $cookie = array(
            'domain' => $defaultDomain,
            'path' => '/',
            'secure' => false,
        );

        $line = preg_replace('/^Set-Cookie2?: /i', '', trim($line));

        // trim any trailing semicolons.
        $line = trim($line, ';');

        phpCAS::trace("Cookie Line: $line");

        // This implementation makes the assumption that semicolons will not
        // be present in quoted attribute values. While attribute values that
        // contain semicolons are allowed by RFC2965, they are hopefully rare
        // enough to ignore for our purposes. Most browsers make the same
        // assumption.
        $attributeStrings = explode(';', $line);

        foreach ( $attributeStrings as $attributeString ) {
            // split on the first equals sign and use the rest as value
            $attributeParts = explode('=', $attributeString, 2);

            $attributeName = trim($attributeParts[0]);
            $attributeNameLC = strtolower($attributeName);

            if (isset($attributeParts[1])) {
                $attributeValue = trim($attributeParts[1]);
                // Values may be quoted strings.
                if (strpos($attributeValue, '"') === 0) {
                    $attributeValue = trim($attributeValue, '"');
                    // unescape any escaped quotes:
                    $attributeValue = str_replace('\"', '"', $attributeValue);
                }
            } else {
                $attributeValue = null;
            }

            switch ($attributeNameLC) {
            case 'expires':
                $cookie['expires'] = strtotime($attributeValue);
                break;
            case 'max-age':
                $cookie['max-age'] = (int)$attributeValue;
                // Set an expiry time based on the max-age
                if ($cookie['max-age']) {
                    $cookie['expires'] = time() + $cookie['max-age'];
                } else {
                    // If max-age is zero, then the cookie should be removed
                    // imediately so set an expiry before now.
                    $cookie['expires'] = time() - 1;
                }
                break;
            case 'secure':
                $cookie['secure'] = true;
                break;
            case 'domain':
            case 'path':
            case 'port':
            case 'version':
            case 'comment':
            case 'commenturl':
            case 'discard':
            case 'httponly':
                $cookie[$attributeNameLC] = $attributeValue;
                break;
            default:
                $cookie['name'] = $attributeName;
                $cookie['value'] = $attributeValue;
            }
        }

        return $cookie;
    }
protected function parseCookieHeader ( $ line , $ defaultDomain ) { if ( ! $ defaultDomain ) { throw new CAS_InvalidArgumentException ( '$defaultDomain was not provided.' ) ; } // Set our default values $ cookie = array ( 'domain' => $ defaultDomain , 'path' => '/' , 'secure' => false , ) ; $ line = preg_replace ( '/^Set-Cookie2?: /i' , '' , trim ( $ line ) ) ; // trim any trailing semicolons. $ line = trim ( $ line , ';' ) ; phpCAS :: trace ( "Cookie Line: $line" ) ; // This implementation makes the assumption that semicolons will not // be present in quoted attribute values. While attribute values that // contain semicolons are allowed by RFC2965, they are hopefully rare // enough to ignore for our purposes. Most browsers make the same // assumption. $ attributeStrings = explode ( ';' , $ line ) ; foreach ( $ attributeStrings as $ attributeString ) { // split on the first equals sign and use the rest as value $ attributeParts = explode ( '=' , $ attributeString , 2 ) ; $ attributeName = trim ( $ attributeParts [ 0 ] ) ; $ attributeNameLC = strtolower ( $ attributeName ) ; if ( isset ( $ attributeParts [ 1 ] ) ) { $ attributeValue = trim ( $ attributeParts [ 1 ] ) ; // Values may be quoted strings. if ( strpos ( $ attributeValue , '"' ) === 0 ) { $ attributeValue = trim ( $ attributeValue , '"' ) ; // unescape any escaped quotes: $ attributeValue = str_replace ( '\"' , '"' , $ attributeValue ) ; } } else { $ attributeValue = null ; } switch ( $ attributeNameLC ) { case 'expires' : $ cookie [ 'expires' ] = strtotime ( $ attributeValue ) ; break ; case 'max-age' : $ cookie [ 'max-age' ] = ( int ) $ attributeValue ; // Set an expiry time based on the max-age if ( $ cookie [ 'max-age' ] ) { $ cookie [ 'expires' ] = time ( ) + $ cookie [ 'max-age' ] ; } else { // If max-age is zero, then the cookie should be removed // imediately so set an expiry before now. $ cookie [ 'expires' ] = time ( ) - 1 ; } break ; case 'secure' : $ cookie [ 'secure' ] = true ; break ; case 'domain' : case 'path' : case 'port' : case 'version' : case 'comment' : case 'commenturl' : case 'discard' : case 'httponly' : $ cookie [ $ attributeNameLC ] = $ attributeValue ; break ; default : $ cookie [ 'name' ] = $ attributeName ; $ cookie [ 'value' ] = $ attributeValue ; } } return $ cookie ; }
Parse a single cookie header line.

Based on RFC2965 http://www.ietf.org/rfc/rfc2965.txt

@param string $line          The header line.
@param string $defaultDomain The domain to use if none is specified in
the cookie.

@return array
Parse a single cookie header line .