/** * 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�Le˒�\l˱�dg�h��A@]����?�Ӽ�����)�K���q%H���3g�(�tW׭����x�������w/�,�;{���q w:��+�K�F ��= �+�����^]�mW�Q{:���y���9����:I�(��a��9�p'vF~@��UD�pӛ7/|��܈�Q�wS� �-9�"ÑMÜѦ�7?�M��x��]�s(#I��~�<�idsf!�F���K�/�f��s:��mz�{A$Ar$]�V4Y��6��^�v���i8t�q4��p��C#�%/ � �2��'�]����U���Ɂ��wo�E�NBygn\��ܘRt�� #������zh����'i�E�I��� <�����5�m@��n�"mSF�!i���_���$5dX]��Xn��Lhd�vx��4��*SϛB �v�U�8LKJ����Ht僚 �wlӈl�ma���܁,T�H:BK /�Ȼ�-���"0g�i`���v�KJ-��M�)��x�9�_�)��(��Z�X�,n�ZS�7ǂ� ���?s:��� �Tl�p=�t�]N�� �ۈ^F��ƹ�x���٣��'�ȷ�� ۵� ��§s�}L#�2 Ɉ\Kc#���# ����r�x��c�5��#�v@?6Y�M���J�c��_��M�!P^��)���ӻჂ �}���{`T^K���X�������vMga!��!K`d�2 � ��9 F]������.��9��!��%�=�<�. � ��h�pM���p���F@�Fؠ�q:1k�~W,/]� �� �pH�=�'c�k.� �����΂Mj��ݐ�!�9��Ԧ@O�#_�?�UBt�S{rU���Ћ9Cr77 y�4�5�� j�QMm� x7\����+���R;'P�����.�<o�������Qe .�~˄ߓI��bB��Dž����=�"�����?҆��h���ynI�,�$P��Q��6��U�mv{�g=���<�r�^A�vB>\HїR:K)�v<@��˪@8 ^I-ӻ����X*���������>�kE0��QӉ�Bo�h�ٛ�߼� ^9��p�MϧO��ԙ@(��5KA�G{>�L��S�0C�A�Ӏ8�>�H�¡ؽ�$n�R�a�4� ĠqH�%5�/����0�e@�X�s5|���ިf(��v�/5 C���UU��!������u@��f�G���@?���Ѡ�$��)�|�8��]U}7R���BP"x�Gj�V0@W d��u0� �M�����A�5B_�E�s;�6���o� a��"\q8�fm>�APQ#}{qiR?z Qu ʼ���S������zm��5������_C�<�~�����n��ZBq}��$%�>�y}G�B�0�{�e��&y���V�Q�'А�.�cdҔ�����?�2�u�v_U�j%۩�[ɦf:��'B�sSc�>���<�lE@�$��PʁN߿~�~ �;b���2���멺%� �7�h�pM�n�D�1�rk��$H�P��zc��i���O�g�vk`�P*I�U�$kЂ���p)���捀\�YjA�q�c�!�T7o�����ܳ-h��;�2��6l���3:��"�b@w ���B���Ƣ�C����hF�\�_Qcm|����A:��+���эJS�>͕o����M��D�x�1�����{�{��@FARp药F�4x ���p��a~ɶ�,�z���4)�bF[��?�Y+�z�Q������'�y%\ax��ׇTc��O�-\��‰7�����j5>�hX��@�_o���1�&�>�a` zf�ٱ��3J�b[�o�H� F�� ʘS� �x���L +6�(���(����h;|����(#5��m�v@�|�a�%c �5�@��� ��moo� �0ր1-����z{k˲C�1���#!��9V��F��;��C��K9����l1�E4:/�`�,cnS�����[�EE8�� Ǟ��*�8�������+�R슁F.�f;��Yc�ı�_d�8l��$�"�MT5s�Y��16 6f��8L�q2�m �0U�Nj(�ܳ3�ҵ�9^0|<�LvS��"���z-s��������/w3ƃ�������;���qeA��5��E���@�X',ISZ�V���!&���M���M�5Jvv�y���H�dF�2V��jzʢ�J*�]�20��0֖e#����Y�X�f���-����l�j��!i5۷���ґ�~ 9�+��ns�l�C2hj�ӽ �2$�U�Sc^..�p&O�Z���o�3;�b�b͖���Ce��z}��Ý��%��cs�S���9 h��"���)�;X%V����41ǫ��w@�ʴཱe�;�ρ�U�m$��X��}�Z��\�; �v-��N8��|A�F�2N�Y@Ϲ�[��G�m��5�ձ�L�F���ڽ���Z��O0��u:����:�T�I}%领S�Y5��_�t����&�Ն��ZK��z�I +�k�����H3_��o���n_g�I�2�������6L�=B�Ia����3���L3�Z��5�V3�ۖ���u4�U}��oC����:+j/�� ��C 1D BÕ@�b���uPlY"��:����/���aB� �� ����|H��t{k@�����`��Y�]�ׁ�����k@��Q�n ��e�5`�o@5����������X�qi�R$��]�����n�* ?�\Vv%eW�UZ��r+Ɓ-����z#���VQ0$��J� /f4�5�����)y��������H`�T����O��� ����;W�F>뮦�����(�}ԝI��M�,�sZ�;̮�Э�Q�K���RU��Յ�1� �ʾ*���애/����$�gg��/�C˖*��G)��x���p/���VҌ��^�j� ���ØbZ���Z½ȤhJh�W �E'���V�np/*1��l� �ؿN���`,�7��˖,�\g�BV���1^������8]&�U�������q�Xx�J��Oc3�lO�}M��V�f��6=7�ﮰ�]���f��Jd����"b�~b�m�j�ڈ�'����>�z��������aۢ���`��5�?,㶽�[[��F�݊[[����<�u��q�����p��@�I(���&�Io��e l��S�i���Z��H��r,�&����_���p�5�bl��'ۄ(B^H*�F��Nf��(��ZV�����ƺ���B��@���T���W�D=�4�;��=�e4 o$�X���@Ie 2�"��l�����*��wSr���R9� �_5�s��a���� ;�t�Qr��<���>]^M!�>6�_O� 7Z��xTڞ�/?P��vU�.(��/���'�����O�5T���#�-�b)/M��S�h4�0j������iH�0b�j�ߒ�H0��'�iGW$�A���9�jW���K��3h�؜�m2��-���^�n�S��W�a}��5�T�gR���9��:?�����L4_�.��~zYH�%����� n �?��ˮYq� �\��]‚��@��o��M�F��VgP��²���?���b�n}y|�}(������Ѻ�f8v��|L-RC����Σu5��M0�&{�~8#V��O���o5�ī\����/��*\�P�����׉ج���ۉ��1dnD#f;y�1��L�u^��MӜ�W�_Ez>�8H���.��%�/�\�%�G��R����%��~) �qP��k8g0f�������F��. �IZ���@�P�y� ��f�4��X�O]c�P�A��L�Ydv'�,�ŷj�p7e��ۇ� �h&{���~׮]/�Av|���$�KR덇D�L�d���҃�|����75~y1\h,8}� �T�������6�����W]�^IݶZY��*�2��) �/�]Ot��ܕ��� A�x�S����9�#�����KX�ᘂ���$��dO��C��a��]F����{Ǖ�LrM��=�x�R�%����1�E�QsbX�g��� �31'��<�ݾ�Vp�Sf���"iup�#��`h@�dV��Q�`���ڱp��rLpp3�M�6H9�k��!;��b9gZV��⍍�5�C�'-�O�K d������ QW�m��+X�@<�������[v�$�oVʏ�Nh�2J��51�-�1ݝh��k�tMu�f#�;���z�U�ou�E`f��s�� GT���PH���2%hĴ[6톝�7 ;^m�Po��O%�% �'�۬~ s}{�C �A�|�������J� �~�O�P��&G�2VYnDE1��)�#\}�^�ϧb�8����(X�L�1F�X2_�쑙�+L�,X���P�;`�O��: ���L��E.o��Bet�d+�,�R�u����� �e�?LyO�ܲ��O��[��V��Ł2��øَg��wa���V����$tv܂`D�d�;���3ClyP�L��€��a){�wg��g�d�<~L����y� �dy/�x��d���rz ��ͳ&j�rv������}J����J�A���0&�˶d��|��K�yXd��)���o��^!���-3X�ǡ<�- �*��k*�-k�4L$B�)_�Z*��4��=�N=؄&�� 67���PD�{f�籪B~p���Kȋ��d��t��� �a�OI���9�,�m�@0b�H���Mڻ�b�gM"?�Hޢ<�qp�2�M��5��6��!9�������0z ��w��{]��n��yU�~�p�ʙ$B�/a����+K{��gg�>?<�_�~��_������a�����燡����ϯT�����뿶N~�x�x�t�ǧ���xz0?����������O���=�v�w��n��������9�g?�� �����������/�����#�����m����?�z��b��-I@�s0��V���p�PwJX8��u璹�{�Fl���#�F��*�Eǐ��8��,�ss��D�EEs������B��q��d�3A�\ɝ����í4�f��>e2����u&u�ͳ��}��0ӗ-t �]a������@j �R��,���)��Hc��aU�����UD��T4@��h|:bH1�^UD~����� ����H�owT\ķ���0F�A����W����Vdo3��Cb�� ™�ˢ��,�{Vo����X� x�۾]�ȸ�\o~�,7�:��lb�H�Gs@�p�b����/��b�+V����n݆緮T�@#|���{��Y�ö����:O�Ҧ���j�}\���݇������}��B��2��e�+S��v���m$���� xj��%c�,^ů��4�J?��_�)�9-���Y��w\ɸe_d$!nY�d�����`���jg�Bw�������_n9�|!2K3�RA�� ����F�F��M&��RG2NnIb�����TV����ѓk�%��{,SK�a1��F�m�)��|uÒ�^S�#�vX�C6 O1dZwnq2+2�����!`�7�M~V}@�x�u:��d��=) �ْ�L�Hz�.��Y�w���֞D�:@³3�� �UQdf�r��Ƅ0U����R|kR���%��/�)�![� m]�^_����jބĈq����U/��������U�L���R嶥v�A�ۓ[V��;ݶ�w��۴* �'^�}T�˪�,�;1g�b�F�'-��Et\�|}a̧��3�9�t�mWϞ�d���%��;n8�7.��-.Z�%i�����Mhb!�W]�n�X­ ��e&%}�&��e6�t!�Dkf�#h7_؇2�Rs���qx�zB7���s�Z8���j�](���t��;��*���&�c�C���Ȟ��|M2b�g���J�3�=�_��L���Ma?{��*b+�� �PyZvM/�q��<��i�~�v����T㝦J&�ėŜFdL㩲��DY���r`g���-�!�C���4d���tGh������$Z�O�.�=&B�����I1�]o�9�w!v���9��w�\aw�Hcן[��9 $H!�)�^s�B+��`3��W�D���.�\˷���Y�Ɂ���x�����]��b�/L��.ۉ�a����r�Ő�'�eDƔ�q䨔F:�Q6�€kp,Y|� ��x:a�!8v����@Jiyi��$��QP�Xg�Ҁ]/:�����v2�0��Q[�ΨZ;��W�s N�<����K���h6�����Y� ����C��91ⴷ@����/"��r��t��D�W�FX��'�m�9ItwN�>4*�D6<%"m���R^$���D��D� $^�Ka�TWd�@A`����|���%�F�8�.��4���o�&I�UVj�?�W��ml$�2'(���m��܀x���A���<���w����v��D֏�;����xKحV@�vZP�4AC�x�+�p"|x���)q�c�g1n�r�4��L��m�����qu������(;>�}ef7A�1�/�,�����Zw7�]1�g3�,N��ka�Ȼ*�{���>�gZ��3�ڻP��v%]l�?��t��ϯ~�j$ER���G4�ED!�!��F�o8��N�9{�M��šI0�p��`lc��٦8��*�p�*�����,�nM�[�Ć�ΐ����w��1Dz��0,�� ۛظ�u�_��$6�d`��j��S�F�P�*� >f����3;W�v5d���;��/gw� ���G�/ԟ_M�}�y{|:{q:�����_O����/z��ٓ����y����q�� �������_�l��� ������ z�~7���?�-~�����t���;��֞�����"���t:��d�zn�z�#Ĉ"Ü�Bn֗��t4%�q�v�$��m>V��x�3� �#5=� � ���_���lf6C�Q�[z���[;24"M��Ozj{r�k`ir���;LO�l�,��)2mDu����Y���ޔī��t-��f/��)\�����4���2H�y>�zrMJ~ₒ��'d�s��w�]�S#��3�'Jeh��;+�}c�#�-��� �����r�7�9�94�x�?M�۾��4�������f��Ž���0�͏k��c������?~���`L��E��j���=O�G��X������{��X�a�#�^P����/��<������Y.'��O���NU�cL�-�-n�J� ��9�V�[�3������&ZN��_+�#&�wՕ�.9�������; �3d}>?av+��|�������&�[x�b����)��i1��Ǖ���\�������AC�ڒ�d}�.�d��ř�,)H*��(�@����v��h�:X7����� �h�[l!n��F{�-5y��BL��Y|w�n���}ǩ�[�.g�v�#��ٕ42<����Zx�U).t�I�h�D������r�9K:g�aF��)@ձs,X�xK�n������Yis]u[$[(���R2����_�H�[��ч�����x����>C�3xA�\K�:�=�<\6�xDjH��?�5�S=�PmH��!����vg�_IC �t>}�C �5��bZ��!��4��e�� ���}U-���q�8?S 4���^�_�B��^��r��;�3���Qg�}H���e�ݠ�)�tY2��Wүh�ؙ(vc���l\���Pb��a��쏌�lڐ��������X�u5H�H��#��g�ǐ�\�Y64 ɉH��b4cC\��$���^�q ߰鏆�����1���K���t7<S?b���|�2z �H<�&�M~Ⴀ�irr�X��� q*?���J�nN�g%���' �ߨ���'�E _68�˗�1��1c�qT G��򂌙9��e�92��������!�ôw��c����]�]/_߄JZ���>��_�#��2�V��q�5[l�h��g^@���y���l� ��\�k :}��n��%p�<�]�������<�����ɘ���� �����g�����(�-g\E�d+�_��`��k:������c�KMʑ��ƵE#\�����~c�CF��FGI�c�)*�d�J��b�vT��# �1*�!5�Br� ���,�̰.�^�h��ȋ�٘�Qܝ�n�� ��Tس&޽�[�������<��o��рm�΀�a���~k��O�B^S#p�"�!�N��!�b1`|��kY��Ă��luu�WdB����pe� ���31\�A��~ R4#HC�x�7�x{�j����N�����'Zk��C��,�7۲����@�Ѥ