Перейти к содержимому

Функция PHP setrawcookie(): Всё, что нужно знать

Как PHP-разработчику, вам может потребоваться устанавливать «сырые» (raw) cookies для вашего веб-приложения, чтобы хранить информацию на стороне клиента. Функция setrawcookie() — это встроенная функция PHP, которая позволяет устанавливать «сырой» cookie. В отличие от стандартной функции setcookie(), setrawcookie() не кодирует значение cookie в URL, что делает её полезной, когда нужно сохранить предварительно закодированные данные или бинарные строки. В этой статье мы подробно рассмотрим функцию setrawcookie() и способы её использования.

Что такое функция setrawcookie()?

Функция setrawcookie() — это встроенная функция PHP (доступна начиная с PHP 5.2.0), которая позволяет устанавливать «сырой» cookie на стороне клиента. Она возвращает true при успехе и false при ошибке.

Как использовать функцию setrawcookie()

Использование функции setrawcookie() довольно просто. Вот её синтаксис:

PHP Syntax

php
setrawcookie($name, $value, $expire, $path, $domain, $secure, $httponly);

Функция принимает семь параметров:

  • $name: Имя cookie.
  • $value: «Сырое» значение cookie (не закодированное в URL).
  • $expire: Время истечения в виде Unix-метки времени.
  • $path: Путь на сервере, где cookie будет доступен.
  • $domain: Домен, где cookie будет доступен.
  • $secure: Указывает, должен ли cookie передаваться только по HTTPS.
  • $httponly: Указывает, должен ли cookie быть недоступен для клиентского JavaScript.

Ниже приведен пример использования функции setrawcookie() для установки «сырого» cookie:

Example

php
<?php

$name = "username";
$value = "john";
$expire = time() + (86400 * 30); // 30 days
$path = "/";
$domain = ".example.com";
$secure = true;
$httponly = true;
setrawcookie($name, $value, $expire, $path, $domain, $secure, $httponly);

В этом примере мы используем функцию setrawcookie() для установки «сырого» cookie с именем username и значением john. Мы указываем время истечения через 30 дней от текущего момента, путь на сервере как /, а домен как .example.com. Флаги secure и httponly установлены в true, чтобы гарантировать передачу cookie только по HTTPS и его недоступность для клиентского JavaScript.

setrawcookie() vs setcookie()

Основное различие между setrawcookie() и setcookie() заключается в обработке значения cookie. setcookie() автоматически кодирует значение с помощью rawurlencode(), что безопасно для обычного текста, но может вызвать проблемы, если нужно сохранить предварительно закодированные данные или бинарные строки. setrawcookie() пропускает этот шаг кодирования, предоставляя вам полный контроль над «сырым» значением. Для большинства стандартных случаев предпочтительнее setcookie(), но setrawcookie() незаменима при работе с уже закодированными данными.

Заключение

Функция setrawcookie() — это полезный инструмент для установки «сырых» cookies в вашем PHP-веб-приложении. Понимая её синтаксис, параметры и отличия от setcookie(), вы сможете безопасно хранить предварительно закодированные данные на стороне клиента.

Практика

Каково правильное использование функции setrawcookie() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.