CodeIgniter4/libraries/cookies.html
2025-02-07 17:48:15 +00:00

1479 lines
119 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Cookies &mdash; CodeIgniter 4.6.0 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/citheme.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/citheme_dark.css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/js/citheme.js"></script>
<script src="../_static/js/carbon.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Cross-Origin Resource Sharing (CORS)" href="cors.html" />
<link rel="prev" title="Caching Driver" href="caching.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html">
<img src="../_static/ci-logo-text.svg" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a></li>
<li class="toctree-l2"><a class="reference internal" href="../intro/requirements.html">Server Requirements</a></li>
<li class="toctree-l2"><a class="reference internal" href="../intro/credits.html">Credits</a></li>
<li class="toctree-l2"><a class="reference internal" href="../intro/psr.html">PSR Compliance</a></li>
<li class="toctree-l2"><a class="reference internal" href="../license.html">License Agreement</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_composer.html">Composer Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_manual.html">Manual Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/running.html">Running Your App</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/troubleshooting.html">Troubleshooting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/deployment.html">Deployment</a></li>
<li class="toctree-l2"><a class="reference internal" href="../changelogs/index.html">Change Logs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/upgrading.html">Upgrading From a Previous Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation/repositories.html">CodeIgniter Repositories</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../tutorial/index.html">Build Your First Application</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/static_pages.html">Static Pages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/news_section.html">News Section</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/create_news_items.html">Create News Items</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorial/conclusion.html">Conclusion</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">CodeIgniter4 Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../concepts/structure.html">Application Structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/mvc.html">Models, Views, and Controllers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/autoloader.html">Autoloading Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/services.html">Services</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/factories.html">Factories</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/http.html">Working with HTTP Requests</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/security.html">Security Guidelines</a></li>
<li class="toctree-l2"><a class="reference internal" href="../concepts/goals.html">Design and Architectural Goals</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../general/index.html">General Topics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../general/configuration.html">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/urls.html">CodeIgniter URLs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/helpers.html">Helper Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/common_functions.html">Global Functions and Constants</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/logging.html">Logging Information</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/errors.html">Error Handling</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/caching.html">Web Page Caching</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/ajax.html">AJAX Requests</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/modules.html">Code Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/managing_apps.html">Managing your Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="../general/environments.html">Handling Multiple Environments</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../incoming/index.html">Controllers and Routing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../incoming/routing.html">URI Routing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/controllers.html">Controllers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/filters.html">Controller Filters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/auto_routing_improved.html">Auto Routing (Improved)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/message.html">HTTP Messages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/request.html">Request Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/incomingrequest.html">IncomingRequest Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/content_negotiation.html">Content Negotiation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/methodspoofing.html">HTTP Method Spoofing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../incoming/restful.html">RESTful Resource Handling</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../outgoing/index.html">Building Responses</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/views.html">Views</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_renderer.html">View Renderer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_layouts.html">View Layouts</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_cells.html">View Cells</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_parser.html">View Parser</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/view_decorators.html">View Decorators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/table.html">HTML Table Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/response.html">HTTP Responses</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/api_responses.html">API Response Trait</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/csp.html">Content Security Policy</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/localization.html">Localization</a></li>
<li class="toctree-l2"><a class="reference internal" href="../outgoing/alternative_php.html">Alternate PHP Syntax for View Files</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Working with Databases</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../database/examples.html">Quick Start: Usage Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/configuration.html">Database Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/connecting.html">Connecting to a Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/queries.html">Running Queries</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/results.html">Generating Query Results</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/helpers.html">Query Helper Methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/query_builder.html">Query Builder Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/transactions.html">Transactions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/metadata.html">Getting Metadata</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/call_function.html">Custom Function Calls</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/events.html">Database Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="../database/utilities.html">Database Utilities</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../models/index.html">Modeling Data</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../models/model.html">Using CodeIgniter's Model</a></li>
<li class="toctree-l2"><a class="reference internal" href="../models/entities.html">Using Entity Classes</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../dbmgmt/index.html">Managing Databases</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/forge.html">Database Forge</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/migration.html">Database Migrations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/seeds.html">Database Seeding</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/db_commands.html">Database Commands</a></li>
</ul>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library Reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="caching.html">Caching Driver</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Cookies</a></li>
<li class="toctree-l2"><a class="reference internal" href="cors.html">Cross-Origin Resource Sharing (CORS)</a></li>
<li class="toctree-l2"><a class="reference internal" href="curlrequest.html">CURLRequest Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="email.html">Email Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption.html">Encryption Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="files.html">Working with Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_collections.html">File Collections</a></li>
<li class="toctree-l2"><a class="reference internal" href="honeypot.html">Honeypot Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="images.html">Image Manipulation Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="pagination.html">Pagination</a></li>
<li class="toctree-l2"><a class="reference internal" href="publisher.html">Publisher</a></li>
<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="sessions.html">Session Library</a></li>
<li class="toctree-l2"><a class="reference internal" href="throttler.html">Throttler</a></li>
<li class="toctree-l2"><a class="reference internal" href="time.html">Times and Dates</a></li>
<li class="toctree-l2"><a class="reference internal" href="typography.html">Typography</a></li>
<li class="toctree-l2"><a class="reference internal" href="uploaded_files.html">Working with Uploaded Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="uri.html">Working with URIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="user_agent.html">User Agent Class</a></li>
<li class="toctree-l2"><a class="reference internal" href="validation.html">Validation</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../helpers/index.html">Helpers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../helpers/array_helper.html">Array Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/cookie_helper.html">Cookie Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/date_helper.html">Date Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/filesystem_helper.html">Filesystem Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/form_helper.html">Form Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/html_helper.html">HTML Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/inflector_helper.html">Inflector Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/number_helper.html">Number Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/security_helper.html">Security Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/test_helper.html">Test Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/text_helper.html">Text Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/url_helper.html">URL Helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="../helpers/xml_helper.html">XML Helper</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../testing/index.html">Testing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../testing/overview.html">Getting Started</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/database.html">Database</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/fabricator.html">Generating Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/controllers.html">Controller Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/feature.html">HTTP Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/response.html">Testing Responses</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/cli.html">Testing CLI Commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/mocking.html">Mocking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/benchmark.html">Benchmarking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testing/debugging.html">Debugging Your Application</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../cli/index.html">Command Line Usage</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_overview.html">CLI Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_controllers.html">Running Controllers via CLI</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/spark_commands.html">Spark Commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_commands.html">Creating Spark Commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_generators.html">CLI Generators</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_library.html">CLI Library</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_request.html">CLIRequest Class</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../extending/index.html">Extending CodeIgniter</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../extending/core_classes.html">Creating Core System Classes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/common.html">Replacing Common Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/events.html">Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/basecontroller.html">Extending the Controller</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/authentication.html">Authentication</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/composer_packages.html">Creating Composer Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extending/contributing.html">Contributing to CodeIgniter</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="official_packages.html">Official Packages</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">CodeIgniter</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<a class="btn btn-neutral float-right" href="https://github.com/codeigniter4/CodeIgniter4/edit/develop/user_guide_src/source/libraries/cookies.rst">Edit this page</a>
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Library Reference</a></li>
<li class="breadcrumb-item active">Cookies</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="cookies">
<h1>Cookies<a class="headerlink" href="#cookies" title="Permalink to this heading"></a></h1>
<p>An <strong>HTTP cookie</strong> (web cookie, browser cookie) is a small piece of data that a server
sends to the users web browser. The browser may store it and send it back with later
requests to the same server. Typically, its used to tell if two requests came from
the same browser - keeping a user logged-in, for example.
It remembers stateful information for the stateless HTTP protocol.</p>
<p>Cookies are mainly used for three purposes:</p>
<ul class="simple">
<li><p><strong>Session management</strong>: Logins, shopping carts, game scores, or anything else the server should remember</p></li>
<li><p><strong>Personalization</strong>: User preferences, themes, and other settings</p></li>
<li><p><strong>Tracking</strong>: Recording and analyzing user behavior</p></li>
</ul>
<p>To help you efficiently send cookies to browsers,
CodeIgniter provides the <code class="docutils literal notranslate"><span class="pre">CodeIgniter\Cookie\Cookie</span></code> class to abstract the
cookie interaction.</p>
<nav class="contents local" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#creating-cookies" id="id1">Creating Cookies</a></p>
<ul>
<li><p><a class="reference internal" href="#overriding-defaults" id="id2">Overriding Defaults</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#accessing-cookie-s-attributes" id="id3">Accessing Cookies Attributes</a></p></li>
<li><p><a class="reference internal" href="#immutable-cookies" id="id4">Immutable Cookies</a></p></li>
<li><p><a class="reference internal" href="#validating-a-cookie-s-attributes" id="id5">Validating a Cookies Attributes</a></p>
<ul>
<li><p><a class="reference internal" href="#validating-the-name-attribute" id="id6">Validating the Name Attribute</a></p></li>
<li><p><a class="reference internal" href="#validating-the-prefix-attribute" id="id7">Validating the Prefix Attribute</a></p></li>
<li><p><a class="reference internal" href="#validating-the-samesite-attribute" id="id8">Validating the SameSite Attribute</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#sending-cookies" id="id9">Sending Cookies</a></p></li>
<li><p><a class="reference internal" href="#using-the-cookie-store" id="id10">Using the Cookie Store</a></p>
<ul>
<li><p><a class="reference internal" href="#getting-the-store-from-response" id="id11">Getting the Store from Response</a></p></li>
<li><p><a class="reference internal" href="#creating-cookiestore" id="id12">Creating CookieStore</a></p></li>
<li><p><a class="reference internal" href="#checking-cookies-in-store" id="id13">Checking Cookies in Store</a></p></li>
<li><p><a class="reference internal" href="#getting-cookies-in-store" id="id14">Getting Cookies in Store</a></p></li>
<li><p><a class="reference internal" href="#adding-removing-cookies-in-store" id="id15">Adding/Removing Cookies in Store</a></p></li>
<li><p><a class="reference internal" href="#dispatching-cookies-in-store" id="id16">Dispatching Cookies in Store</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#cookie-personalization" id="id17">Cookie Personalization</a></p></li>
<li><p><a class="reference internal" href="#namespace-CodeIgniter\Cookie" id="id18">Class Reference</a></p></li>
</ul>
</nav>
<section id="creating-cookies">
<h2><a class="toc-backref" href="#id1" role="doc-backlink">Creating Cookies</a><a class="headerlink" href="#creating-cookies" title="Permalink to this heading"></a></h2>
<p>There are currently four ways to create a new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> value object.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">DateTime</span><span class="p">;</span>
<span class="c1">// Using the constructor</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span>
<span class="s1">&#39;remember_token&#39;</span><span class="p">,</span>
<span class="s1">&#39;f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6&#39;</span><span class="p">,</span>
<span class="p">[</span>
<span class="s1">&#39;expires&#39;</span> <span class="o">=&gt;</span> <span class="k">new</span> <span class="nx">DateTime</span><span class="p">(</span><span class="s1">&#39;+2 hours&#39;</span><span class="p">),</span>
<span class="s1">&#39;prefix&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;__Secure-&#39;</span><span class="p">,</span>
<span class="s1">&#39;path&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span>
<span class="s1">&#39;domain&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
<span class="s1">&#39;secure&#39;</span> <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
<span class="s1">&#39;httponly&#39;</span> <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
<span class="s1">&#39;raw&#39;</span> <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
<span class="s1">&#39;samesite&#39;</span> <span class="o">=&gt;</span> <span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_LAX</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">);</span>
<span class="c1">// Supplying a Set-Cookie header string</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="nx">Cookie</span><span class="o">::</span><span class="na">fromHeaderString</span><span class="p">(</span>
<span class="s1">&#39;remember_token=f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6; Path=/; Secure; HttpOnly; SameSite=Lax&#39;</span><span class="p">,</span>
<span class="k">false</span><span class="p">,</span> <span class="c1">// raw</span>
<span class="p">);</span>
<span class="c1">// Using the fluent builder interface</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="p">(</span><span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">))</span>
<span class="o">-&gt;</span><span class="na">withValue</span><span class="p">(</span><span class="s1">&#39;f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">withPrefix</span><span class="p">(</span><span class="s1">&#39;__Secure-&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">withExpires</span><span class="p">(</span><span class="k">new</span> <span class="nx">DateTime</span><span class="p">(</span><span class="s1">&#39;+2 hours&#39;</span><span class="p">))</span>
<span class="o">-&gt;</span><span class="na">withPath</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">withDomain</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">withSecure</span><span class="p">(</span><span class="k">true</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">withHTTPOnly</span><span class="p">(</span><span class="k">true</span><span class="p">)</span>
<span class="o">-&gt;</span><span class="na">withSameSite</span><span class="p">(</span><span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_LAX</span><span class="p">);</span>
<span class="c1">// Using the global function `cookie` which implicitly calls `new Cookie()`</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="nx">cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">,</span> <span class="s1">&#39;f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>When constructing the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> object, only the <code class="docutils literal notranslate"><span class="pre">name</span></code> attribute is required. All other else are optional.
If the optional attributes are not modified, their values will be filled up by the default values saved in
the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> class.</p>
<section id="overriding-defaults">
<h3><a class="toc-backref" href="#id2" role="doc-backlink">Overriding Defaults</a><a class="headerlink" href="#overriding-defaults" title="Permalink to this heading"></a></h3>
<p>To override the defaults currently stored in the class, you can pass a <code class="docutils literal notranslate"><span class="pre">Config\Cookie</span></code>
instance or an array of defaults to the static <code class="docutils literal notranslate"><span class="pre">Cookie::setDefaults()</span></code> method.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">Config\Cookie</span> <span class="k">as</span> <span class="nx">CookieConfig</span><span class="p">;</span>
<span class="c1">// pass in a Config\Cookie instance before constructing a Cookie class</span>
<span class="nx">Cookie</span><span class="o">::</span><span class="na">setDefaults</span><span class="p">(</span><span class="nx">config</span><span class="p">(</span><span class="nx">CookieConfig</span><span class="o">::</span><span class="na">class</span><span class="p">));</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
<span class="c1">// pass in an array of defaults</span>
<span class="nv">$myDefaults</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">&#39;expires&#39;</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span>
<span class="s1">&#39;samesite&#39;</span> <span class="o">=&gt;</span> <span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_STRICT</span><span class="p">,</span>
<span class="p">];</span>
<span class="nx">Cookie</span><span class="o">::</span><span class="na">setDefaults</span><span class="p">(</span><span class="nv">$myDefaults</span><span class="p">);</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>Passing the <code class="docutils literal notranslate"><span class="pre">Config\Cookie</span></code> instance or an array to <code class="docutils literal notranslate"><span class="pre">Cookie::setDefaults()</span></code> will effectively
overwrite your defaults and will persist until new defaults are passed.</p>
<section id="changing-defaults-for-a-limited-time">
<h4>Changing Defaults for a Limited Time<a class="headerlink" href="#changing-defaults-for-a-limited-time" title="Permalink to this heading"></a></h4>
<p>If you do not want this
behavior but only want to change defaults for a limited time, you can take advantage of
<code class="docutils literal notranslate"><span class="pre">Cookie::setDefaults()</span></code> return which returns the old defaults array.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">Config\Cookie</span> <span class="k">as</span> <span class="nx">CookieConfig</span><span class="p">;</span>
<span class="nv">$oldDefaults</span> <span class="o">=</span> <span class="nx">Cookie</span><span class="o">::</span><span class="na">setDefaults</span><span class="p">(</span><span class="nx">config</span><span class="p">(</span><span class="nx">CookieConfig</span><span class="o">::</span><span class="na">class</span><span class="p">));</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;my_token&#39;</span><span class="p">,</span> <span class="s1">&#39;muffins&#39;</span><span class="p">);</span>
<span class="c1">// return the old defaults</span>
<span class="nx">Cookie</span><span class="o">::</span><span class="na">setDefaults</span><span class="p">(</span><span class="nv">$oldDefaults</span><span class="p">);</span>
</pre></div>
</div>
</section>
</section>
</section>
<section id="accessing-cookie-s-attributes">
<h2><a class="toc-backref" href="#id3" role="doc-backlink">Accessing Cookies Attributes</a><a class="headerlink" href="#accessing-cookie-s-attributes" title="Permalink to this heading"></a></h2>
<p>Once instantiated, you can easily access a <code class="docutils literal notranslate"><span class="pre">Cookie</span></code>s attribute by using one of its getter methods.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">DateTime</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">DateTimeZone</span><span class="p">;</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span>
<span class="s1">&#39;remember_token&#39;</span><span class="p">,</span>
<span class="s1">&#39;f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6&#39;</span><span class="p">,</span>
<span class="p">[</span>
<span class="s1">&#39;expires&#39;</span> <span class="o">=&gt;</span> <span class="k">new</span> <span class="nx">DateTime</span><span class="p">(</span><span class="s1">&#39;2025-02-14 00:00:00&#39;</span><span class="p">,</span> <span class="k">new</span> <span class="nx">DateTimeZone</span><span class="p">(</span><span class="s1">&#39;UTC&#39;</span><span class="p">)),</span>
<span class="s1">&#39;prefix&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;__Secure-&#39;</span><span class="p">,</span>
<span class="s1">&#39;path&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;/&#39;</span><span class="p">,</span>
<span class="s1">&#39;domain&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
<span class="s1">&#39;secure&#39;</span> <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
<span class="s1">&#39;httponly&#39;</span> <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
<span class="s1">&#39;raw&#39;</span> <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
<span class="s1">&#39;samesite&#39;</span> <span class="o">=&gt;</span> <span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_LAX</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">);</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">();</span> <span class="c1">// &#39;remember_token&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getPrefix</span><span class="p">();</span> <span class="c1">// &#39;__Secure-&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getPrefixedName</span><span class="p">();</span> <span class="c1">// &#39;__Secure-remember_token&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getExpiresTimestamp</span><span class="p">();</span> <span class="c1">// UNIX timestamp</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getExpiresString</span><span class="p">();</span> <span class="c1">// &#39;Fri, 14-Feb-2025 00:00:00 GMT&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">isExpired</span><span class="p">();</span> <span class="c1">// false</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getMaxAge</span><span class="p">();</span> <span class="c1">// the difference from time() to expires</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">isRaw</span><span class="p">();</span> <span class="c1">// false</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">isSecure</span><span class="p">();</span> <span class="c1">// true</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getPath</span><span class="p">();</span> <span class="c1">// &#39;/&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getDomain</span><span class="p">();</span> <span class="c1">// &#39;&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">isHTTPOnly</span><span class="p">();</span> <span class="c1">// true</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getSameSite</span><span class="p">();</span> <span class="c1">// &#39;Lax&#39;</span>
<span class="c1">// additional getter</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getId</span><span class="p">();</span> <span class="c1">// &#39;__Secure-remember_token;;/&#39;</span>
<span class="c1">// when using `setcookie()`&#39;s alternative signature on PHP 7.3+</span>
<span class="c1">// you can easily use the `getOptions()` method to supply the</span>
<span class="c1">// $options parameter</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getOptions</span><span class="p">();</span>
</pre></div>
</div>
</section>
<section id="immutable-cookies">
<h2><a class="toc-backref" href="#id4" role="doc-backlink">Immutable Cookies</a><a class="headerlink" href="#immutable-cookies" title="Permalink to this heading"></a></h2>
<p>A new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance is an immutable value object representation of an HTTP cookie. Being immutable,
modifying any of the instances attributes will not affect the original instance. The modification <strong>always</strong>
returns a new instance. You need to retain this new instance in order to use it.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">,</span> <span class="s1">&#39;admin&#39;</span><span class="p">);</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">();</span> <span class="c1">// &#39;login_token&#39;</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">withName</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">);</span>
<span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">();</span> <span class="c1">// &#39;login_token&#39;</span>
<span class="nv">$new</span> <span class="o">=</span> <span class="nv">$cookie</span><span class="o">-&gt;</span><span class="na">withName</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">);</span>
<span class="nv">$new</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">();</span> <span class="c1">// &#39;remember_token&#39;</span>
</pre></div>
</div>
</section>
<section id="validating-a-cookie-s-attributes">
<h2><a class="toc-backref" href="#id5" role="doc-backlink">Validating a Cookies Attributes</a><a class="headerlink" href="#validating-a-cookie-s-attributes" title="Permalink to this heading"></a></h2>
<p>An HTTP cookie is regulated by several specifications that need to be followed in order to be
accepted by browsers. Thus, when creating or modifying certain attributes of the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code>,
these are validated in order to check if these follow the specifications.</p>
<p>A <code class="docutils literal notranslate"><span class="pre">CookieException</span></code> is thrown if violations were reported.</p>
<section id="validating-the-name-attribute">
<h3><a class="toc-backref" href="#id6" role="doc-backlink">Validating the Name Attribute</a><a class="headerlink" href="#validating-the-name-attribute" title="Permalink to this heading"></a></h3>
<p>A cookie name can be any US-ASCII character, except for the following:</p>
<ul class="simple">
<li><p>control characters;</p></li>
<li><p>spaces or tabs;</p></li>
<li><p>separator characters, such as <code class="docutils literal notranslate"><span class="pre">(</span> <span class="pre">)</span> <span class="pre">&lt;</span> <span class="pre">&gt;</span> <span class="pre">&#64;</span> <span class="pre">,</span> <span class="pre">;</span> <span class="pre">:</span> <span class="pre">\</span> <span class="pre">&quot;</span> <span class="pre">/</span> <span class="pre">[</span> <span class="pre">]</span> <span class="pre">?</span> <span class="pre">=</span> <span class="pre">{</span> <span class="pre">}</span></code></p></li>
</ul>
<p>If setting the <code class="docutils literal notranslate"><span class="pre">$raw</span></code> parameter to <code class="docutils literal notranslate"><span class="pre">true</span></code> this validation will be strictly made. This is because
PHPs <a class="reference external" href="https://www.php.net/manual/en/function.setcookie.php">setcookie()</a>
and <a class="reference external" href="https://www.php.net/manual/en/function.setrawcookie.php">setrawcookie()</a>
will reject cookies with invalid names. Additionally, cookie
names cannot be an empty string.</p>
</section>
<section id="validating-the-prefix-attribute">
<h3><a class="toc-backref" href="#id7" role="doc-backlink">Validating the Prefix Attribute</a><a class="headerlink" href="#validating-the-prefix-attribute" title="Permalink to this heading"></a></h3>
<p>When using the <code class="docutils literal notranslate"><span class="pre">__Secure-</span></code> prefix, cookies must be set with the <code class="docutils literal notranslate"><span class="pre">$secure</span></code> flag set to <code class="docutils literal notranslate"><span class="pre">true</span></code>. If
using the <code class="docutils literal notranslate"><span class="pre">__Host-</span></code> prefix, cookies must exhibit the following:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">$secure</span></code> flag set to <code class="docutils literal notranslate"><span class="pre">true</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">$domain</span></code> is empty</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">$path</span></code> must be <code class="docutils literal notranslate"><span class="pre">/</span></code></p></li>
</ul>
</section>
<section id="validating-the-samesite-attribute">
<h3><a class="toc-backref" href="#id8" role="doc-backlink">Validating the SameSite Attribute</a><a class="headerlink" href="#validating-the-samesite-attribute" title="Permalink to this heading"></a></h3>
<p>The SameSite attribute accepts three values:</p>
<ul class="simple">
<li><p><strong>Lax</strong>: Cookies are not sent on normal cross-site subrequests (for example to load images or frames into a third party site), but are sent when a user is navigating to the origin site (<em>i.e.</em> when following a link).</p></li>
<li><p><strong>Strict</strong>: Cookies will only be sent in a first-party context and not be sent along with requests initiated by third party websites.</p></li>
<li><p><strong>None</strong>: Cookies will be sent in all contexts, <em>i.e.</em> in responses to both first-party and cross-origin requests.</p></li>
</ul>
<p>CodeIgniter, however, allows you to set the SameSite attribute to an empty string. When an empty string is
provided, the default SameSite setting saved in the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> class is used. You can change the default SameSite
by using the <code class="docutils literal notranslate"><span class="pre">Cookie::setDefaults()</span></code> as discussed above.</p>
<p>Recent cookie specifications have changed such that modern browsers are being required to give a default SameSite
if nothing was provided. This default is <code class="docutils literal notranslate"><span class="pre">Lax</span></code>. If you have set the SameSite to be an empty string and your
default SameSite is also an empty string, your cookie will be given the <code class="docutils literal notranslate"><span class="pre">Lax</span></code> value.</p>
<p>If the SameSite is set to <code class="docutils literal notranslate"><span class="pre">None</span></code> you need to make sure that <code class="docutils literal notranslate"><span class="pre">Secure</span></code> is also set to <code class="docutils literal notranslate"><span class="pre">true</span></code>.</p>
<p>When writing the SameSite attribute, the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> class accepts any of the values case-insensitively. You can
also take advantage of the classs constants to make it not a hassle.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_LAX</span><span class="p">;</span> <span class="c1">// &#39;lax&#39;</span>
<span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_STRICT</span><span class="p">;</span> <span class="c1">// &#39;strict&#39;</span>
<span class="nx">Cookie</span><span class="o">::</span><span class="na">SAMESITE_NONE</span><span class="p">;</span> <span class="c1">// &#39;none&#39;</span>
</pre></div>
</div>
</section>
</section>
<section id="sending-cookies">
<h2><a class="toc-backref" href="#id9" role="doc-backlink">Sending Cookies</a><a class="headerlink" href="#sending-cookies" title="Permalink to this heading"></a></h2>
<p>Set the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> objects in the <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> of the Response object, and
the framework will automatically send the cookies.</p>
<p>Use <a class="reference internal" href="../outgoing/response.html#CodeIgniter\HTTP\Response::setCookie" title="CodeIgniter\HTTP\Response::setCookie"><code class="xref php php-meth docutils literal notranslate"><span class="pre">CodeIgniter\HTTP\Response::setCookie()</span></code></a> to set:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="nv">$response</span> <span class="o">=</span> <span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">);</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span>
<span class="s1">&#39;remember_token&#39;</span><span class="p">,</span>
<span class="s1">&#39;f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6&#39;</span><span class="p">,</span>
<span class="p">[</span>
<span class="s1">&#39;max-age&#39;</span> <span class="o">=&gt;</span> <span class="mi">3600</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="c1">// Expires in 2 hours</span>
<span class="p">],</span>
<span class="p">);</span>
<span class="nv">$response</span><span class="o">-&gt;</span><span class="na">setCookie</span><span class="p">(</span><span class="nv">$cookie</span><span class="p">);</span>
</pre></div>
</div>
<p>You can also use the <a class="reference internal" href="../helpers/cookie_helper.html#set_cookie" title="set_cookie"><code class="xref php php-func docutils literal notranslate"><span class="pre">set_cookie()</span></code></a> helper function:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="nx">helper</span><span class="p">(</span><span class="s1">&#39;cookie&#39;</span><span class="p">);</span>
<span class="nv">$cookie</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span>
<span class="s1">&#39;remember_token&#39;</span><span class="p">,</span>
<span class="s1">&#39;f699c7fd18a8e082d0228932f3acd40e1ef5ef92efcedda32842a211d62f0aa6&#39;</span><span class="p">,</span>
<span class="p">[</span>
<span class="s1">&#39;max-age&#39;</span> <span class="o">=&gt;</span> <span class="mi">3600</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="c1">// Expires in 2 hours</span>
<span class="p">],</span>
<span class="p">);</span>
<span class="nx">set_cookie</span><span class="p">(</span><span class="nv">$cookie</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="using-the-cookie-store">
<h2><a class="toc-backref" href="#id10" role="doc-backlink">Using the Cookie Store</a><a class="headerlink" href="#using-the-cookie-store" title="Permalink to this heading"></a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Normally, there is no need to use CookieStore directly.</p>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> class represents an immutable collection of <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> objects.</p>
<section id="getting-the-store-from-response">
<h3><a class="toc-backref" href="#id11" role="doc-backlink">Getting the Store from Response</a><a class="headerlink" href="#getting-the-store-from-response" title="Permalink to this heading"></a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code>
instance can be accessed from the current <code class="docutils literal notranslate"><span class="pre">Response</span></code> object.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nv">$cookieStore</span> <span class="o">=</span> <span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCookieStore</span><span class="p">();</span>
</pre></div>
</div>
</section>
<section id="creating-cookiestore">
<h3><a class="toc-backref" href="#id12" role="doc-backlink">Creating CookieStore</a><a class="headerlink" href="#creating-cookiestore" title="Permalink to this heading"></a></h3>
<p>CodeIgniter provides three other ways to create a new instance of the <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\CookieStore</span><span class="p">;</span>
<span class="c1">// Passing an array of `Cookie` objects in the constructor</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">CookieStore</span><span class="p">([</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">),</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">),</span>
<span class="p">]);</span>
<span class="c1">// Passing an array of `Set-Cookie` header strings</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="nx">CookieStore</span><span class="o">::</span><span class="na">fromCookieHeaders</span><span class="p">([</span>
<span class="s1">&#39;remember_token=me; Path=/; SameSite=Lax&#39;</span><span class="p">,</span>
<span class="s1">&#39;login_token=admin; Path=/; SameSite=Lax&#39;</span><span class="p">,</span>
<span class="p">]);</span>
<span class="c1">// using the global `cookies` function</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="nx">cookies</span><span class="p">([</span><span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">)],</span> <span class="k">false</span><span class="p">);</span>
<span class="c1">// retrieving the `CookieStore` instance saved in our current `Response` object</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="nx">cookies</span><span class="p">();</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When using the global <a class="reference internal" href="../general/common_functions.html#cookies" title="cookies"><code class="xref php php-func docutils literal notranslate"><span class="pre">cookies()</span></code></a> function, the passed <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> array will only be considered
if the second argument, <code class="docutils literal notranslate"><span class="pre">$getGlobal</span></code>, is set to <code class="docutils literal notranslate"><span class="pre">false</span></code>.</p>
</div>
</section>
<section id="checking-cookies-in-store">
<h3><a class="toc-backref" href="#id13" role="doc-backlink">Checking Cookies in Store</a><a class="headerlink" href="#checking-cookies-in-store" title="Permalink to this heading"></a></h3>
<p>To check whether a <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> object exists in the <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> instance, you can use several ways:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\CookieStore</span><span class="p">;</span>
<span class="c1">// check if cookie is in the current cookie collection</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">CookieStore</span><span class="p">([</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">),</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">),</span>
<span class="p">]);</span>
<span class="nv">$store</span><span class="o">-&gt;</span><span class="na">has</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
<span class="c1">// check if cookie is in the current Response&#39;s cookie collection</span>
<span class="nx">cookies</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">has</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
<span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">hasCookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">);</span>
<span class="c1">// using the cookie helper to check the current Response</span>
<span class="c1">// not available to v4.1.1 and lower</span>
<span class="nx">helper</span><span class="p">(</span><span class="s1">&#39;cookie&#39;</span><span class="p">);</span>
<span class="nx">has_cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="getting-cookies-in-store">
<h3><a class="toc-backref" href="#id14" role="doc-backlink">Getting Cookies in Store</a><a class="headerlink" href="#getting-cookies-in-store" title="Permalink to this heading"></a></h3>
<p>Retrieving a <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance in a cookie collection is very easy:</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\CookieStore</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">Config\Services</span><span class="p">;</span>
<span class="c1">// getting cookie in the current cookie collection</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">CookieStore</span><span class="p">([</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">),</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">),</span>
<span class="p">]);</span>
<span class="nv">$store</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
<span class="c1">// getting cookie in the current Response&#39;s cookie collection</span>
<span class="nx">cookies</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
<span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">);</span>
<span class="c1">// using the cookie helper to get cookie from the Response&#39;s cookie collection</span>
<span class="nx">helper</span><span class="p">(</span><span class="s1">&#39;cookie&#39;</span><span class="p">);</span>
<span class="nx">get_cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>When getting a <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance directly from a <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code>, an invalid name
will throw a <code class="docutils literal notranslate"><span class="pre">CookieException</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="c1">// throws CookieException</span>
<span class="nv">$store</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">(</span><span class="s1">&#39;unknown_cookie&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>When getting a <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance from the current <code class="docutils literal notranslate"><span class="pre">Response</span></code>s cookie collection,
an invalid name will just return <code class="docutils literal notranslate"><span class="pre">null</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nx">cookies</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">(</span><span class="s1">&#39;unknown_cookie&#39;</span><span class="p">);</span> <span class="c1">// null</span>
</pre></div>
</div>
<p>If no arguments are supplied in when getting cookies from the <code class="docutils literal notranslate"><span class="pre">Response</span></code>, all <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> objects
in store will be displayed.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nx">cookies</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span> <span class="c1">// array of Cookie objects</span>
<span class="c1">// alternatively, you can use the display method</span>
<span class="nx">cookies</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">display</span><span class="p">();</span>
<span class="c1">// or even from the Response</span>
<span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCookies</span><span class="p">();</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The helper function <a class="reference internal" href="../helpers/cookie_helper.html#get_cookie" title="get_cookie"><code class="xref php php-func docutils literal notranslate"><span class="pre">get_cookie()</span></code></a> gets the cookie from the current <code class="docutils literal notranslate"><span class="pre">Request</span></code> object, not
from <code class="docutils literal notranslate"><span class="pre">Response</span></code>. This function checks the <code class="docutils literal notranslate"><span class="pre">$_COOKIE</span></code> array if that cookie is set and fetches it
right away.</p>
</div>
</section>
<section id="adding-removing-cookies-in-store">
<h3><a class="toc-backref" href="#id15" role="doc-backlink">Adding/Removing Cookies in Store</a><a class="headerlink" href="#adding-removing-cookies-in-store" title="Permalink to this heading"></a></h3>
<p>As previously mentioned, <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> objects are immutable. You need to save the modified instance
in order to work on it. The original instance is left unchanged.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\CookieStore</span><span class="p">;</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">CookieStore</span><span class="p">([</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">),</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">),</span>
<span class="p">]);</span>
<span class="c1">// adding a new Cookie instance</span>
<span class="nv">$new</span> <span class="o">=</span> <span class="nv">$store</span><span class="o">-&gt;</span><span class="na">put</span><span class="p">(</span><span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;admin_token&#39;</span><span class="p">,</span> <span class="s1">&#39;yes&#39;</span><span class="p">));</span>
<span class="c1">// removing a Cookie instance</span>
<span class="nv">$new</span> <span class="o">=</span> <span class="nv">$store</span><span class="o">-&gt;</span><span class="na">remove</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Removing a cookie from the store <strong>DOES NOT</strong> delete it from the browser.
If you intend to delete a cookie <em>from the browser</em>, you must put an empty value
cookie with the same name to the store.</p>
</div>
<p>When interacting with the cookies in store in the current <code class="docutils literal notranslate"><span class="pre">Response</span></code> object, you can safely add or delete
cookies without worrying the immutable nature of the cookie collection. The <code class="docutils literal notranslate"><span class="pre">Response</span></code> object will replace
the instance with the modified instance.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">setCookie</span><span class="p">(</span><span class="s1">&#39;admin_token&#39;</span><span class="p">,</span> <span class="s1">&#39;yes&#39;</span><span class="p">);</span>
<span class="nx">service</span><span class="p">(</span><span class="s1">&#39;response&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">deleteCookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
<span class="c1">// using the cookie helper</span>
<span class="nx">helper</span><span class="p">(</span><span class="s1">&#39;cookie&#39;</span><span class="p">);</span>
<span class="nx">set_cookie</span><span class="p">(</span><span class="s1">&#39;admin_token&#39;</span><span class="p">,</span> <span class="s1">&#39;yes&#39;</span><span class="p">);</span>
<span class="nx">delete_cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">);</span>
</pre></div>
</div>
</section>
<section id="dispatching-cookies-in-store">
<h3><a class="toc-backref" href="#id16" role="doc-backlink">Dispatching Cookies in Store</a><a class="headerlink" href="#dispatching-cookies-in-store" title="Permalink to this heading"></a></h3>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>This method was deprecated as of version 4.1.6 and was removed in 4.6.0.</p>
</div>
<p>More often than not, you do not need to concern yourself in manually sending cookies. CodeIgniter will do this
for you. However, if you really need to manually send cookies, you can use the <code class="docutils literal notranslate"><span class="pre">dispatch</span></code> method. Just like
in sending other headers, you need to make sure the headers are not yet sent by checking the value
of <code class="docutils literal notranslate"><span class="pre">headers_sent()</span></code>.</p>
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;?</span><span class="nx">php</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\Cookie</span><span class="p">;</span>
<span class="k">use</span> <span class="nx">CodeIgniter\Cookie\CookieStore</span><span class="p">;</span>
<span class="nv">$store</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">CookieStore</span><span class="p">([</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;login_token&#39;</span><span class="p">),</span>
<span class="k">new</span> <span class="nx">Cookie</span><span class="p">(</span><span class="s1">&#39;remember_token&#39;</span><span class="p">),</span>
<span class="p">]);</span>
<span class="nv">$store</span><span class="o">-&gt;</span><span class="na">dispatch</span><span class="p">();</span> <span class="c1">// After dispatch, the collection is now empty.</span>
</pre></div>
</div>
</section>
</section>
<section id="cookie-personalization">
<h2><a class="toc-backref" href="#id17" role="doc-backlink">Cookie Personalization</a><a class="headerlink" href="#cookie-personalization" title="Permalink to this heading"></a></h2>
<p>Sane defaults are already in place inside the <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> class to ensure the smooth creation of cookie
objects. However, you may wish to define your own settings by changing the following settings in the
<code class="docutils literal notranslate"><span class="pre">Config\Cookie</span></code> class in <strong>app/Config/Cookie.php</strong> file.</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Setting</p></th>
<th class="head"><p>Options/Types</p></th>
<th class="head"><p>Default</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>$prefix</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">string</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">''</span></code></p></td>
<td><p>Prefix to prepend to the cookie name.</p></td>
</tr>
<tr class="row-odd"><td><p><strong>$expires</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">DateTimeInterface|string|int</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">0</span></code></p></td>
<td><p>The expires timestamp.</p></td>
</tr>
<tr class="row-even"><td><p><strong>$path</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">string</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">/</span></code></p></td>
<td><p>The path property of the cookie.</p></td>
</tr>
<tr class="row-odd"><td><p><strong>$domain</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">string</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">''</span></code></p></td>
<td><p>The domain property of the cookie.with trailing slash.</p></td>
</tr>
<tr class="row-even"><td><p><strong>$secure</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>/<code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
<td><p>If to be sent over secure HTTPS.</p></td>
</tr>
<tr class="row-odd"><td><p><strong>$httponly</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>/<code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code></p></td>
<td><p>If not accessible to JavaScript.</p></td>
</tr>
<tr class="row-even"><td><p><strong>$samesite</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Lax</span></code>/<code class="docutils literal notranslate"><span class="pre">None</span></code>/<code class="docutils literal notranslate"><span class="pre">Strict</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Lax</span></code></p></td>
<td><p>The SameSite attribute.</p></td>
</tr>
<tr class="row-odd"><td><p><strong>$raw</strong></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">true</span></code>/<code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">false</span></code></p></td>
<td><p>If to be dispatched using <code class="docutils literal notranslate"><span class="pre">setrawcookie()</span></code>.</p></td>
</tr>
</tbody>
</table>
<p>In runtime, you can manually supply a new default using the <code class="docutils literal notranslate"><span class="pre">Cookie::setDefaults()</span></code> method.</p>
</section>
<section id="namespace-CodeIgniter\Cookie">
<span id="class-reference"></span><h2><a class="toc-backref" href="#id18" role="doc-backlink">Class Reference</a><a class="headerlink" href="#namespace-CodeIgniter\Cookie" title="Permalink to this heading"></a></h2>
<dl class="php class">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie">
<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">CodeIgniter\Cookie\</span></span><span class="sig-name descname"><span class="pre">Cookie</span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie" title="Permalink to this definition"></a></dt>
<dd><dl class="php staticmethod">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::setDefaults">
<em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">setDefaults</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">$config</span> <span class="pre">=</span> <span class="pre">[]</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::setDefaults" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$config</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">\Config\Cookie|array</span></code></span>) The configuration array or instance</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>The old defaults</p>
</dd>
</dl>
<p>Set the default attributes to a Cookie instance by injecting the values from the <code class="docutils literal notranslate"><span class="pre">Config\Cookie</span></code> config or an array.</p>
</dd></dl>
<dl class="php staticmethod">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::fromHeaderString">
<em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">fromHeaderString</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$header</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">bool</span> <span class="pre">$raw</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::fromHeaderString" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$header</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The <code class="docutils literal notranslate"><span class="pre">Set-Cookie</span></code> header string</p></li>
<li><p><strong>$raw</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether this cookie is not to be URL encoded and sent via <code class="docutils literal notranslate"><span class="pre">setrawcookie()</span></code></p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
<dt class="field-even">Throws<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieException</span></code></p>
</dd>
</dl>
<p>Create a new Cookie instance from a <code class="docutils literal notranslate"><span class="pre">Set-Cookie</span></code> header.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::__construct">
<span class="sig-name descname"><span class="pre">__construct</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$name</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">string</span> <span class="pre">$value</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">array</span> <span class="pre">$options</span> <span class="pre">=</span> <span class="pre">[]</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::__construct" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$name</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The cookie name</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) The cookie value</p></li>
<li><p><strong>$options</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) The cookie options</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
<dt class="field-even">Throws<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieException</span></code></p>
</dd>
</dl>
<p>Construct a new Cookie instance.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getId">
<span class="sig-name descname"><span class="pre">getId</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getId" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span></p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The ID used in indexing in the cookie collection.</p>
</dd>
</dl>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getPrefix">
<span class="sig-name descname"><span class="pre">getPrefix</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getPrefix" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getName">
<span class="sig-name descname"><span class="pre">getName</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getPrefixedName">
<span class="sig-name descname"><span class="pre">getPrefixedName</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getPrefixedName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getValue">
<span class="sig-name descname"><span class="pre">getValue</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getValue" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getExpiresTimestamp">
<span class="sig-name descname"><span class="pre">getExpiresTimestamp</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getExpiresTimestamp" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getExpiresString">
<span class="sig-name descname"><span class="pre">getExpiresString</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getExpiresString" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::isExpired">
<span class="sig-name descname"><span class="pre">isExpired</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::isExpired" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getMaxAge">
<span class="sig-name descname"><span class="pre">getMaxAge</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getMaxAge" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getDomain">
<span class="sig-name descname"><span class="pre">getDomain</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getDomain" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getPath">
<span class="sig-name descname"><span class="pre">getPath</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getPath" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::isSecure">
<span class="sig-name descname"><span class="pre">isSecure</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::isSecure" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::isHTTPOnly">
<span class="sig-name descname"><span class="pre">isHTTPOnly</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::isHTTPOnly" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getSameSite">
<span class="sig-name descname"><span class="pre">getSameSite</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">string</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getSameSite" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::isRaw">
<span class="sig-name descname"><span class="pre">isRaw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::isRaw" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::getOptions">
<span class="sig-name descname"><span class="pre">getOptions</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">array</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::getOptions" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withRaw">
<span class="sig-name descname"><span class="pre">withRaw</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">bool</span> <span class="pre">$raw</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withRaw" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$raw</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with URL encoding option updated.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withPrefix">
<span class="sig-name descname"><span class="pre">withPrefix</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$prefix</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withPrefix" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$prefix</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new prefix.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withName">
<span class="sig-name descname"><span class="pre">withName</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withName" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$name</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new name.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withValue">
<span class="sig-name descname"><span class="pre">withValue</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$value</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withValue" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new value.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withExpires">
<span class="sig-name descname"><span class="pre">withExpires</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">$expires</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withExpires" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$expires</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">DateTimeInterface|string|int</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new cookie expires time.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withExpired">
<span class="sig-name descname"><span class="pre">withExpired</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withExpired" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie that will expire from the browser.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withNeverExpiring">
<span class="sig-name descname"><span class="pre">withNeverExpiring</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withNeverExpiring" title="Permalink to this definition"></a></dt>
<dd><div class="admonition important">
<p class="admonition-title">Important</p>
<p>This method was deprecated as of version 4.2.6 and was removed in 4.6.0.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$name</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie that will virtually never expire.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withDomain">
<span class="sig-name descname"><span class="pre">withDomain</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">?string</span> <span class="pre">$domain</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withDomain" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$domain</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string|null</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new domain.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withPath">
<span class="sig-name descname"><span class="pre">withPath</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">?string</span> <span class="pre">$path</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withPath" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$path</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string|null</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new path.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withSecure">
<span class="sig-name descname"><span class="pre">withSecure</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">bool</span> <span class="pre">$secure</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withSecure" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$secure</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new “Secure” attribute.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withHTTPOnly">
<span class="sig-name descname"><span class="pre">withHTTPOnly</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">bool</span> <span class="pre">$httponly</span> <span class="pre">=</span> <span class="pre">true</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withHTTPOnly" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$httponly</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new “HttpOnly” attribute.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::withSameSite">
<span class="sig-name descname"><span class="pre">withSameSite</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$samesite</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::withSameSite" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$samesite</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) </p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> instance</p>
</dd>
</dl>
<p>Creates a new Cookie with new “SameSite” attribute.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::toHeaderString">
<span class="sig-name descname"><span class="pre">toHeaderString</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::toHeaderString" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span></p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Returns the string representation that can be passed as a header string.</p>
</dd>
</dl>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\Cookie::toArray">
<span class="sig-name descname"><span class="pre">toArray</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\Cookie::toArray" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span></p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Returns the array representation of the Cookie instance.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="php class">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore">
<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">CodeIgniter\Cookie\</span></span><span class="sig-name descname"><span class="pre">CookieStore</span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore" title="Permalink to this definition"></a></dt>
<dd><dl class="php staticmethod">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::fromCookieHeaders">
<em class="property"><span class="pre">static</span> </em><span class="sig-name descname"><span class="pre">fromCookieHeaders</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">array</span> <span class="pre">$headers</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">bool</span> <span class="pre">$raw</span> <span class="pre">=</span> <span class="pre">false</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::fromCookieHeaders" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$header</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) Array of <code class="docutils literal notranslate"><span class="pre">Set-Cookie</span></code> headers</p></li>
<li><p><strong>$raw</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span>) Whether not to use URL encoding</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieStore</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> instance</p>
</dd>
<dt class="field-even">Throws<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieException</span></code></p>
</dd>
</dl>
<p>Creates a CookieStore from an array of <code class="docutils literal notranslate"><span class="pre">Set-Cookie</span></code> headers.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::__construct">
<span class="sig-name descname"><span class="pre">__construct</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">array</span> <span class="pre">$cookies</span></em><span class="sig-paren">)</span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::__construct" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$cookies</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span>) Array of <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> objects</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieStore</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> instance</p>
</dd>
<dt class="field-even">Throws<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieException</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::has">
<span class="sig-name descname"><span class="pre">has</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$name</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">string</span> <span class="pre">$prefix</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">?string</span> <span class="pre">$value</span> <span class="pre">=</span> <span class="pre">null</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::has" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$name</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Cookie name</p></li>
<li><p><strong>$prefix</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Cookie prefix</p></li>
<li><p><strong>$value</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string|null</span></code></span>) Cookie value</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">bool</span></code></span></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Checks if a <code class="docutils literal notranslate"><span class="pre">Cookie</span></code> object identified by name and prefix is present in the collection.</p>
</dd>
</dl>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::get">
<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$name</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">string</span> <span class="pre">$prefix</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Cookie</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::get" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$name</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Cookie name</p></li>
<li><p><strong>$prefix</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Cookie prefix</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">Cookie</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Retrieves an instance of Cookie identified by a name and prefix.</p>
</dd>
<dt class="field-even">Throws<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieException</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::put">
<span class="sig-name descname"><span class="pre">put</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">Cookie</span> <span class="pre">$cookie</span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">CookieStore</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::put" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$cookie</strong> (<span><a class="reference internal" href="#CodeIgniter\Cookie\Cookie" title="CodeIgniter\Cookie\Cookie"><code class="xref php php-obj docutils literal notranslate"><span class="pre">Cookie</span></code></a></span>) A Cookie object</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieStore</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> instance</p>
</dd>
</dl>
<p>Store a new cookie and return a new collection. The original collection is left unchanged.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::remove">
<span class="sig-name descname"><span class="pre">remove</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">string</span> <span class="pre">$name</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">string</span> <span class="pre">$prefix</span> <span class="pre">=</span> <span class="pre">''</span></em><span class="optional">]</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">CookieStore</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::remove" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>$name</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Cookie name</p></li>
<li><p><strong>$prefix</strong> (<span><code class="xref php php-obj docutils literal notranslate"><span class="pre">string</span></code></span>) Cookie prefix</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">CookieStore</span></code></p>
</dd>
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>new <code class="docutils literal notranslate"><span class="pre">CookieStore</span></code> instance</p>
</dd>
</dl>
<p>Removes a cookie from a collection and returns an updated collection.
The original collection is left unchanged.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::dispatch">
<span class="sig-name descname"><span class="pre">dispatch</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">void</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::dispatch" title="Permalink to this definition"></a></dt>
<dd><div class="admonition important">
<p class="admonition-title">Important</p>
<p>This method was deprecated as of version 4.1.6 and was removed in 4.6.0.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">void</span></code></span></p>
</dd>
</dl>
<p>Dispatches all cookies in store.</p>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::display">
<span class="sig-name descname"><span class="pre">display</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">array</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::display" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">array</span></code></span></p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Returns all cookie instances in store.</p>
</dd>
</dl>
</dd></dl>
<dl class="php method">
<dt class="sig sig-object php" id="CodeIgniter\Cookie\CookieStore::clear">
<span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">void</span></span></span><a class="headerlink" href="#CodeIgniter\Cookie\CookieStore::clear" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p><span><code class="xref php php-obj docutils literal notranslate"><span class="pre">void</span></code></span></p>
</dd>
</dl>
<p>Clears the cookie collection.</p>
</dd></dl>
</dd></dl>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="caching.html" class="btn btn-neutral float-left" title="Caching Driver" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="cors.html" class="btn btn-neutral float-right" title="Cross-Origin Resource Sharing (CORS)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2019-2025 CodeIgniter Foundation.
<span class="lastupdated">Last updated on Feb 07, 2025.
</span></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(false);
});
</script>
</body>
</html>