/** * HTTP API: WP_Http_Cookie class * * @package WordPress * @subpackage HTTP * @since 4.4.0 */ /** * Core class used to encapsulate a single cookie object for internal use. * * Returned cookies are represented using this class, and when cookies are set, if they are not * already a WP_Http_Cookie() object, then they are turned into one. * * @todo The WordPress convention is to use underscores instead of camelCase for function and method * names. Need to switch to use underscores instead for the methods. * * @since 2.8.0 */ #[AllowDynamicProperties] class WP_Http_Cookie { /** * Cookie name. * * @since 2.8.0 * * @var string */ public $name; /** * Cookie value. * * @since 2.8.0 * * @var string */ public $value; /** * When the cookie expires. Unix timestamp or formatted date. * * @since 2.8.0 * * @var string|int|null */ public $expires; /** * Cookie URL path. * * @since 2.8.0 * * @var string */ public $path; /** * Cookie Domain. * * @since 2.8.0 * * @var string */ public $domain; /** * Cookie port or comma-separated list of ports. * * @since 2.8.0 * * @var int|string */ public $port; /** * host-only flag. * * @since 5.2.0 * * @var bool */ public $host_only; /** * Sets up this cookie object. * * The parameter $data should be either an associative array containing the indices names below * or a header string detailing it. * * @since 2.8.0 * @since 5.2.0 Added `host_only` to the `$data` parameter. * * @param string|array $data { * Raw cookie data as header string or data array. * * @type string $name Cookie name. * @type mixed $value Value. Should NOT already be urlencoded. * @type string|int|null $expires Optional. Unix timestamp or formatted date. Default null. * @type string $path Optional. Path. Default '/'. * @type string $domain Optional. Domain. Default host of parsed $requested_url. * @type int|string $port Optional. Port or comma-separated list of ports. Default null. * @type bool $host_only Optional. host-only storage flag. Default true. * } * @param string $requested_url The URL which the cookie was set on, used for default $domain * and $port values. */ public function __construct( $data, $requested_url = '' ) { if ( $requested_url ) { $parsed_url = parse_url( $requested_url ); } if ( isset( $parsed_url['host'] ) ) { $this->domain = $parsed_url['host']; } $this->path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : '/'; if ( ! str_ends_with( $this->path, '/' ) ) { $this->path = dirname( $this->path ) . '/'; } if ( is_string( $data ) ) { // Assume it's a header string direct from a previous request. $pairs = explode( ';', $data ); // Special handling for first pair; name=value. Also be careful of "=" in value. $name = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) ); $value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 ); $this->name = $name; $this->value = urldecode( $value ); // Removes name=value from items. array_shift( $pairs ); // Set everything else as a property. foreach ( $pairs as $pair ) { $pair = rtrim( $pair ); // Handle the cookie ending in ; which results in an empty final pair. if ( empty( $pair ) ) { continue; } list( $key, $val ) = strpos( $pair, '=' ) ? explode( '=', $pair ) : array( $pair, '' ); $key = strtolower( trim( $key ) ); if ( 'expires' === $key ) { $val = strtotime( $val ); } $this->$key = $val; } } else { if ( ! isset( $data['name'] ) ) { return; } // Set properties based directly on parameters. foreach ( array( 'name', 'value', 'path', 'domain', 'port', 'host_only' ) as $field ) { if ( isset( $data[ $field ] ) ) { $this->$field = $data[ $field ]; } } if ( isset( $data['expires'] ) ) { $this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] ); } else { $this->expires = null; } } } /** * Confirms that it's OK to send this cookie to the URL checked against. * * Decision is based on RFC 2109/2965, so look there for details on validity. * * @since 2.8.0 * * @param string $url URL you intend to send this cookie to * @return bool true if allowed, false otherwise. */ public function test( $url ) { if ( is_null( $this->name ) ) { return false; } // Expires - if expired then nothing else matters. if ( isset( $this->expires ) && time() > $this->expires ) { return false; } // Get details on the URL we're thinking about sending to. $url = parse_url( $url ); $url['port'] = isset( $url['port'] ) ? $url['port'] : ( 'https' === $url['scheme'] ? 443 : 80 ); $url['path'] = isset( $url['path'] ) ? $url['path'] : '/'; // Values to use for comparison against the URL. $path = isset( $this->path ) ? $this->path : '/'; $port = isset( $this->port ) ? $this->port : null; $domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] ); if ( false === stripos( $domain, '.' ) ) { $domain .= '.local'; } // Host - very basic check that the request URL ends with the domain restriction (minus leading dot). $domain = ( str_starts_with( $domain, '.' ) ) ? substr( $domain, 1 ) : $domain; if ( ! str_ends_with( $url['host'], $domain ) ) { return false; } // Port - supports "port-lists" in the format: "80,8000,8080". if ( ! empty( $port ) && ! in_array( $url['port'], array_map( 'intval', explode( ',', $port ) ), true ) ) { return false; } // Path - request path must start with path restriction. if ( ! str_starts_with( $url['path'], $path ) ) { return false; } return true; } /** * Convert cookie name and value back to header string. * * @since 2.8.0 * * @return string Header encoded cookie name and value. */ public function getHeaderValue() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid if ( ! isset( $this->name ) || ! isset( $this->value ) ) { return ''; } /** * Filters the header-encoded cookie value. * * @since 3.4.0 * * @param string $value The cookie value. * @param string $name The cookie name. */ return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name ); } /** * Retrieve cookie header for usage in the rest of the WordPress HTTP API. * * @since 2.8.0 * * @return string */ public function getFullHeader() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid return 'Cookie: ' . $this->getHeaderValue(); } /** * Retrieves cookie attributes. * * @since 4.6.0 * * @return array { * List of attributes. * * @type string|int|null $expires When the cookie expires. Unix timestamp or formatted date. * @type string $path Cookie URL path. * @type string $domain Cookie domain. * } */ public function get_attributes() { return array( 'expires' => $this->expires, 'path' => $this->path, 'domain' => $this->domain, ); } } ��}�v�ƒ賴V�� /[dB�x�HQٲ$;�r,)�ٶ��$l@P�h���y:o��}�|ɩ�n\ R��df��!���uuu���O�O��}wB���9���/��/QW�8�0�9���C��Hq���7ە������_���y��c�_�8�þ4�"?���C wha�4�#؆��ޤ>�e�s#�Fuߙ�l7��r�E�#��9�u:��H�� K���P"FؗB3��y��� ��B�����D�q�kLh_������H"�d_��V4�[��6��^j�v���i8��q4��pgS�2��/ǶO��4������yv��N� �(�Ih�L�kٞ#*����c#����R�v���!�� �1�<�؟j���/�Tô*�a� �ۍP�m��% UU�k���WR7@��N@�����ȐF�x�W�N�>��2�ԙo�XI�ô�d8P��Q�Dsk��c�Fd{n=�o�'d�J��)�=y��O�ej����9&�㷩�#/)����f�u�`�țL���M94E����%�yotU��j��i����g�ܐ�2䕊f��(�cR�Dx{��uT�l\��M��|8:>�Y3 ?B�c��X�Z��4>�;�uG�X�j0���Kx5�>(Ȱ�� GO��A�R�{#A3�`�r��+�#:V�5���t?�,�a���(/�W4跕��K��=P�r>�C2�J���<�. � ��d8uM�ӊ]s�7WF@�ZX��8��Z���9ˋ�7��G�{N�(��ZdO�ɘ�݊Kg�W�+Ù��a�z� i��� @m x��A��W���������y%�VoA/����&�� �@֨b���{jF�����p�^��WލU!�vΡZ+����������W�2��N�wcԊ��ZЯ<�'��T{,n���F��%�B�敤^A}��I��~�!�t[M<��lT?@�`Q��1FRWD4�ǩ��0�s8l|��:�8�UՂ϶��)�R�A�����$����T��H2��ϟ9k�砩§��d���s+�L��;I� � p!E_Hi-�л��j�U�p�2�Z�����T�5Y�[�AKk}�:6��/���Cۅ�I=�7Ğ� ^9��p�Lϧϟ��BH��5KA�E{>��S�1C�@S��ڵHq�P��*�d�Z3���W�8$ݒj73h+�!\}�ߦ�̻O��j��W �^�������󥚡`�ӗڪJ:�J��A@t��h�^p�h�}To��S?�5 A��"��c�{�UU{�f���?Qk�����u����Xаn���.�&vʭx��'�����P����EքU|���p�a����h e@E����ڤ~� ��j�y?A1�[1,�� �zm�������w_C�<�~n����n��Z@q}��$%�>h�y}#�J�g�=�2{X���gp�R?�hHr�� 2iJ����J��� �7m�����f���Ԫ��dS3�S���s[a�>������2�Yb� h��Tݒ��P4h�"}3T"�u���7$|(��a�6������'�g��@( �$A�*G�hA�䡻��b�F@��J�,��Z���VZ��������{��4~ϝp��Y6+n���DAP1��{�T!�+amZ�!���J4�n�Q�����>��j�� �S�ȴA%mt�����s�k�9?#D�-+�6�r�i~w��`|O2�(H ����D��� ��l[��� jMc��,f�����G�@�BQZ���y%\ax��W�Tc����-��c��ZJUˀ� y�,Ϝ��֖ E�q�O�0��a:3��hj����1������7�@$s cwOeL�l�a<��lƅ�Y�|�@�l`�P�>��am���P�6�;�S>3��0�1�F ��r X���p. ��k�k_Yqr���e١��.�H�{�l�Qr^`ѠK`���u-�c�]�-欈F'�,�eL�`d�]�UQ; ٠�ǻ���#�Ue��(����r�C_�]1��e�n'�7+��8p<��؃�曛D��T�Hm�N��q�ò�aw���^�x��zȍlQ����WԹYQ�m4�o��U’4��h$i= 1�Ĝ�hz�NnS�Q��K��M�Fb&3����5�T�#]���n�yэ,C8cmY6B�X�����Ph�UPM��%�zc%PCnvI�޼HG }%����;�imy�n��V��`��յv��^���j钧*�+�1� �S;ˣ��Sc0�5� ��؎@�X�X��0��P�cF�ήet���+ے ~�9ԩN��)�^o�`E����[&V����41ˋ�w@�ʴ���eZ��ρ�U�-�HV)����]jiCs�,���k�%u¡�i�;�7hi�(���� �e�Ky�� )Q�-��j�h`T�5�٩�z��U�� +Z�U�� �Y%��>�.%]�pJ;����+��`� y����5���I��$��%�J zKZ55U&�j�*7b��L����j�RB�ک5���.�e&Uȃ�XQ zc�&�Om�� iִ��]�M�s���&2sg�t��`� ��X���j��U�W%zVX1��f��6��<�q����Ih��:w��Z����ɰ���6H��p����h95����;(� ��n�Fi����VL������6jM�/k�بi������NA��S�m���Z�"�|�g�;���d�S��:sO��!�����{gä�#�z�����:�M�4��*[��4��m�<�_E�Z���Mh��RkI�%�?d!�h@h�C^l|�� �-�Bd�^t�5���7L�:!�Qa��4��,i0�vgH@��-�WZ+ ��+�*��4��� �]i)j�����0�7�@u�� ��j���^�Ÿ�E����.�h�%���J�w৔��.� �j�J+_\n�8���C���< m3�A�*��mw6��(v�5��C��7#�G#��H�(��<���椀�&��[ﶘ��,@,��c#d�� ��)  ��{ ��˾��$��E�ǔ|�!Ä��b���āӉ��I�jiE���ʋ�� ��-��)zk���qYel�|���[1"&WFPY>ʩf'8�bP�&�b��l�&:[�#$��'�/��D�k�J�Kp�����--{7 �ߋ+ZF�8�X{��R]o��Xl�E�� �")���M�J-������"%y�/Nz�,̂=�'x����C���5�}=_� �{��P{��yD�k{�Ѽ��zxUn�l���������{8��|���3/����|}_w�k��{`]ӷ��=|�=�<̗=���>�>����]U�����F��ޢ���Mb�o�c� ��J�av=���ڋ��a�ƒXZ����q����܄�ھ*���애/����$fgw�/�C˖*�G)��x���� ���Ҍ��^�j� ����bZ���ZƒȤhJh�W D'���V�n� *1��l� �ؿI���`,�7��˖,�\g�BV����1^����Ϛ8]$��� �7d�ө��6�"��4џ�f��6�d���9�2±mzn��]a1��l[�?k� "�a�YD���И�μ�ڈ�g�æ�>ӏ:��������cۢ��'`�3��˸k��֖b��l��֖,�hx@8�c�.y�huͽ^)\f/P9@Jᮢa{�vz��-����pC|�L�h�OG�Q h{�|G�+��U�[:���B��+�%*4ݟ�k�<��G[^�R^��٧��ha,�.K���Ӑ�aČ�Կ&'�H0����iGsy� ���hL�g@m�?O]J��9E����u�� o�d���"�3�5��V�����.� ��X. Ê�ᎅ�UI3^�..P��j �.��L�]-c |-���bM���v�c����Y�1�o��ތ͌�n�*d�Ȝ߭����� lP����yGȸ�������̬�,n�W�A�\�[d��Y��x��k�L��u��)|%[��lyA��oS�)H;��7����BYthL�(�㤿N�R����>� �[P$����0%tl�2y�`�f~M-ۃ�=���k9�XDloʏ�B4�׊�P���Ū[�3]�&�$����;��] `J�PGϔ�V�s(d0���c4���<��>4��Ez>�8��m.ܴ%/�\�%�@��P���!ō�����y�%��"or9濰�s�#�8- ��0��H�jcϒ���0���% ��k j��]�q��n�:���~|yp� �>��ݨ�Fc��hQ��f��zQ�� Ȩ�$�^�Z�=&�d�&38�w��壡����Ȁ� ��B��)�d���M<�(P�浱����-�|]х�ki��T�V��� X�����Ϯ'�_a�JL�^x C��)�=]Ĝ��W_��f��, lw@���5�$���NƳC�����D�u���Õ�LrC�=�xRR��z�J����91�r��P�ԙ�w�����o��Ŕ�e�A-�ڈ��1aU@�sT>X!��u,������cӶ5R�WrH�Na 8���/ !� k��=����@�8[e��Y���;��x�� IS'#���a$��,����e�chb`[*c�=�(��'�0l�� �"F�w���j����!�����XM�4���ݓ�LէeJЈ��l�-;;o>v�2�:��0�d#:�JnJ�O7Y���8�p:������v:���C**)���M,?iCi>�MD�Xf������p�%nxq>�n��|-ޔ�`�2 ��S�X|��C�z��0=�`I�l|�CX��rSV���<,��ϊQ�·�q�WF��L'�Pۖvg�5疵q&!Ҕ/vc,���1Ǟx�lB�I����A("�[�U���Nb����b�2�e2�5���u&u�M���}��0ӗMt �]a������w@j �R��(���)��Hc���b"<���������D��CN�Ӌlw]�����o�'$/D�u��m�U\ķ��W0F���5�3_�";�[��� (��e�I�-�{V<���3Q| ����݂GƵ�z����x3�� �9�q#�c�aD4�c�%�u� �#�X�uj�����m(q~{ʚ��b�/�v��z������a��:�������z5�>.�����������}�{?��e�ː#Vf����SDD����"�K���]S��i@���]�ש��ޣ�!�۬a����I�p�K�.4�F�n��H������A���Ì�hÚ�����RC��8�e���ST�ɽx���V^����$$�YdS����y< e:p�pL�����O'װw���'� &����-�m��LGx��}E�F���@��3�g��Z>cŬ��_kPY~�`�:Z$0��@/�q �"H_��)�ڐ5�\kt�� ��� �JJ�j�pNhB�`N�}����,�l��|a*�7�0uo8��^��8�q�J[�x̴�����,��\ j>׎�c�Z���ll$ܝ?����WX��kj\QbĿ��M�Ɠ���[n� �3Z��yC{4 �J���MP����^Ak�� �^�]~L�� d�y��qod�Dl��K� �&������ k{�P+��i]/��D���I-�j�����w!� �4_1�K�k8�7S1M�P�)�ұ�S�>��l����sg�X�`�G [��<���o�� T�=2�v� E�� ���9��ӵx@5���ƅ����P��0\�o�|�'T͌�o^������N;�o��d?�'4���yW��t�[�?����v��$�� ��Ɖ ڳk����^]��m�!�s�e7|*�& ^�2��>�CV�2�b�&�k�VπG�a~a?��V��e0IYa�4����ij��'��l��8]� ��fG�7� �Yf���C��Q ;_�w1�D�.��{2�d[���piQ�X@�9��]��u\%�w�6 a\k;�k.\v6�^�|PA2f��ъ���岠������Q�Ʈ8 u�'���7nX�I"��4/q��1z< �]������� Kˑ�hx�Ǖ�Aw���AȐ]�Ʊ7� �� g�>n`�b���W�D߈!�4ʷp�PƁ���x��]��M��bj,Lb�����0� K����bH���eD����xI)����l����A��~L퉧�B�Iq�H)-/|���/��u�3��bD�@�P�=�M�q��gk�UKb�n�jz������� |'ƵC����VK�,A��HW�!B��q�[����v�i����;�~��nܓ�E��n������DG��N}:~�%��i{�L̐�"��fb����.�xY-�������_ζ������9#/K��p�X&� i�#��=�Q7L������p:���H8eNP$ ��[��W� ���@�(n �D~��H���,�s�&h�?�8vpl��-@`g�B����B� *���\���ó�$N��@Ὄq�� }IS*��Q��n�{�f\K�g��&ʎ�s_��^Ã[�7��5�]Ɩv����+f�r�_Ɖwy-lyW�q�P����RKUr��8.T��:�.6E�?�?F(�Q_̿�*$ERş�=� �L# 9 �T#��`� P�����K�N��H0��G^l×��f/����p>&�����9�K�[j�F�ΐ��U�w��Dz�f',�� �vظ���nq��؄��Y�[Ǟ��^S��p^� �Ю� S�wG=���v�f�����L����;���g㓋���&��|~�~�t?�'��ٹ����;���s<|�����?���'� �͏�����������[���ǃ�� �s4 X�����E�$���h4���d�3�p�ݽ!F�w�0Lg}J��0�{\��.��s�j�g=��e���{��g���kS*� Xo���G�B1@��o� zw�rZ24"M��zj{r�k`ir���;LO�l�,ë��=k��3]e3��u~���w�ʦ��5t����#)�B;�'� A��O���M�O6���$¦�zVn�c;�vQf�ƭ���f!��>�/b�{��q��)�u�3 �N �<����� �0hq˩�(�u ���sw����C��%�-7:���m6Eqw����\|�o3w�D3s`���c��#���J���q�K��-ܲ|l����1y�tW״��6Z�D���(�LM3� ��ԙ�]����4�R��[�)H�ǿ�o��� 3�5}a��4 {؊�y�=�w-'΁B����ÌVg&����sv�wv�[&��Y��M�w9^�p9��&�����:ӒE]�j�3E�p�� �����6�I���3��Ƶ��'��j�S�UBoH�9�j�����\��ɺ9�S>�`0�A�,ܖ�-oP�&���y��}rgI{�٫Z��iqd|~.��Cg�� a<�3��=�m�94�s��pe�D�x��Ȳ�2��A^L"Hm1`��פc�%N�D�#�3>���A�)�`�|�B 7���`�����l_ �7�mn�/�DV��r��cf�)�S��Q!=52��_���`��ryw�y��Y3����x7ȼ�?�o~�׌� ��U�[���#�I�ሇ͍@)�cRD%�����K\A�y�V��+�/�.<9�����'\Zbu��x#�e�������b6^ŋW/�k����1;�B3��x*�T���g~f�ܐ�����d� ��R8���9c��T� ���L�!��ZZ�C;�vs�h=Y���ϢY�v-��Rxߘ�����Ot�����eQ�#����� I�|��D��]�O����/�/%��̷���������S!��p��B�]�Kidx�������� ��f6 I��-��@�z=J 7�Cm��8C�Ô�;"�hˡe�[�$��{ �=���g1n-�+��}���!W�NV[;���KFʱĊQ���+9.3xb4�q���wa��[��8qF��r��(1���Ku��� ���p���O���M�}�P78����#������$ǔ�1�� +@>q�cΒ�Xל�%i Pulo<�#޼$�k�m-�_<�w���u�-sl����ȈW���P�t�]���?�pt|x~���2З} /���^è�r/-�,��$դ���_b|�I��֤���l���%�ORW��O���_q=��OL�y>�8���zr)!ʆ�A��oWU�u#"������0�; G�8�O�H1�sd�}~��%���?�5���"���4yr��F7/f /\� ���U�K/v)�]��X31>ח8'Е>� ��Xg_2f��&��ٮ�7��́�ik��x�IԽ�8���Ҳ�IN@���8��7NFK���;�ſ����������{���.e_��Fx8�~�f���:e���xLM�� ���A����8�,)N��T8~����>��$�n�J�g`�'Χ4�O�Pˍ����@<� l�p��&�1��c�qT G��򂌙 ��e� 2t��5ɀw��I�0������k������PI+�/����<�Q�/#k�X'X�Ŗ�f�N�?A@�{�~ ���l���\-�i�v�v�������|0�A)����q���j"S0�9e�h��M�o�2xWb@R ��咫���!D�� .��} ��� �T�iQZ��X4�E�ڍno���A8dTo*���?&�͠O�T�*�kGk�y��?F�z+���,H�����̨�W5��t�nC���� a�}��]��0�L����>܆M����,���� t$S,<��K��#~r����K&�uIvrk�����g �z8e�� T4M��m����L� \V����x �f���_�X��)n�ŝ�^I�\o�ox$�%������mu�MuQ���e���G�\�Ҡ