Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); fix: set_cookie() $expire type by kenjis · Pull Request #8080 · codeigniter4/CodeIgniter4 · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions system/HTTP/ResponseInterface.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,7 +322,7 @@ public function sendBody();
*
* @param array|string $name Cookie name or array containing binds
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix
Expand All@@ -335,7 +335,7 @@ public function sendBody();
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand Down
15 changes: 6 additions & 9 deletions system/HTTP/ResponseTrait.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -554,7 +554,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value Cookie value
* @param string $expire Cookie expiration time in seconds
* @param int $expire Cookie expiration time in seconds
* @param string $domain Cookie domain (e.g.: '.yourdomain.com')
* @param string $path Cookie path (default: '/')
* @param string $prefix Cookie name prefix ('': the default prefix)
Expand All@@ -567,7 +567,7 @@ public function redirect(string $uri, string $method = 'auto', ?int $code = null
public function setCookie(
$name,
$value = '',
$expire = '',
$expire = 0,
$domain = '',
$path = '/',
$prefix = '',
Expand All@@ -581,14 +581,11 @@ public function setCookie(
return $this;
}

/** @var CookieConfig|null $cookieConfig */
$cookieConfig = config(CookieConfig::class);

if ($cookieConfig instanceof CookieConfig) {
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;
}
$secure ??= $cookieConfig->secure;
$httponly ??= $cookieConfig->httponly;
$samesite ??= $cookieConfig->samesite;

if (is_array($name)) {
// always leave 'name' in last place, as the loop will break otherwise, due to ${$item}
Expand DownExpand Up@@ -700,7 +697,7 @@ public function deleteCookie(string $name = '', string $domain = '', string $pat
}

if (! $found) {
$this->setCookie($name, '', '', $domain, $path, $prefix);
$this->setCookie($name, '', 0, $domain, $path, $prefix);
}

return $this;
Expand Down
4 changes: 2 additions & 2 deletions system/Helpers/cookie_helper.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@
*
* @param array|Cookie|string $name Cookie name / array containing binds / Cookie object
* @param string $value The value of the cookie
* @param string $expire The number of seconds until expiration
* @param int $expire The number of seconds until expiration
* @param string $domain For site-wide cookie. Usually: .yourdomain.com
* @param string $path The cookie path
* @param string $prefix The cookie prefix ('': the default prefix)
Expand All@@ -41,7 +41,7 @@
function set_cookie(
$name,
string $value = '',
string $expire = '',
int $expire = 0,
string $domain = '',
string $path = '/',
string $prefix = '',
Expand Down
11 changes: 11 additions & 0 deletions user_guide_src/source/changelogs/v4.5.0.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,6 +57,8 @@ Interface Changes
or implemented these interfaces, all these changes are backward compatible
and require no intervention.

- **ResponseInterface:** The default value of the third parameter ``$expire`` of
the ``ResponseInterface::setCookie()`` has been fixed from ``''`` to ``0``.
- **Logger:** The `psr/log <https://packagist.org/packages/psr/log>`_ package has
been upgraded to v2.0.0.

Expand All@@ -65,6 +67,15 @@ Interface Changes
Method Signature Changes
========================

Setting Cookies
---------------

The third parameter ``$expire`` in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.

The type has been changed from ``string`` to ``int``, and the default value has
been changed from ``''`` to ``0``.

FileLocatorInterface
--------------------

Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/helpers/cookie_helper.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ Available Functions

The following functions are available:

.. php:function:: set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
.. php:function:: set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this function *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand Down
4 changes: 2 additions & 2 deletions user_guide_src/source/outgoing/response.rst
Original file line numberDiff line numberDiff line change
Expand Up@@ -453,7 +453,7 @@ The methods provided by the parent class that are available are:
followed by the response body. For the main application response, you do not need to call
this as it is handled automatically by CodeIgniter.

.. php:method:: setCookie($name = ''[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])
.. php:method:: setCookie($name = ''[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httponly = false[, $samesite = null]]]]]]]])

:param array|Cookie|string $name: Cookie name *or* associative array of all of the parameters available to this method *or* an instance of ``CodeIgniter\Cookie\Cookie``
:param string $value: Cookie value
Expand DownExpand Up@@ -481,7 +481,7 @@ The methods provided by the parent class that are available are:
.. literalinclude:: response/023.php

Only the ``name`` and ``value`` are required. To delete a cookie set it with the
``expire`` blank.
``value`` blank.
Comment thread
MGatner marked this conversation as resolved.

The ``expire`` is set in **seconds**, which will be added to the current
time. Do not include the time, but rather only the number of seconds
Expand Down
2 changes: 1 addition & 1 deletion user_guide_src/source/outgoing/response/023.php
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
$cookie = [
'name' => 'The Cookie Name',
'value' => 'The Value',
'expire' => '86500',
'expire' => 86500,
'domain' => '.some-domain.com',
'path' => '/',
'prefix' => 'myprefix_',
Expand Down