Переменные извне PHP
HTTP Cookies
PHP прозрачно поддерживает HTTP cookies как определено в » RFC 6265. Cookies — это
механизм для хранения данных в удалённом браузере и, таким образом, отслеживания и
идентификации вернувшихся пользователей. Вы можете
установить cookies, используя функцию setcookie().
Cookies являются частью HTTP-заголовка, поэтому функция SetCookie
должна вызываться до того, как браузеру будет отправлен какой бы то
ни было вывод. Это то же ограничение, что и для функции
header(). Данные, хранящиеся в cookie, доступны
в соответствующих массивах данных cookie, таких как
$_COOKIE и $_REQUEST. Подробности и примеры
смотрите в справочной странице setcookie().
Замечание:
Начиная с PHP 7.2.34, 7.3.23 и 7.4.11, соответственно, имена
входящих cookie больше не декодируются из URL-закодированной строки из соображений безопасности.
Если вы хотите присвоить множество значений одной переменной cookie,
вы можете присвоить их как массив. Например:
Это создаст две разные cookie, хотя в вашем скрипте MyCookie будет
теперь одним массивом. Если вы хотите установить именно одну cookie
со множеством значений, сначала рассмотрите возможность использования к
значениям такие функции, как serialize() или
explode().
Обратите внимание, что cookie заменит предыдущую cookie с тем же
именем в вашем браузере, если только путь или домен не отличаются.
Так, для приложения корзины покупок вы, возможно, захотите
сохранить счётчик. То есть:
Пример #4 Пример использования setcookie()
<?php
if (isset($_COOKIE['count'])) {
$count = $_COOKIE['count'] + 1;
} else {
$count = 1;
}
setcookie('count', $count, time()+3600);
setcookie("Cart[$count]", $item, time()+3600);
?>
Точки в именах приходящих переменных
Как правило, PHP не меняет передаваемых скрипту имён переменных.
Однако следует отметить, что точка не является корректным
символом в имени переменной PHP. Поэтому рассмотрим такую запись:
<?php
$varname.ext; /* неверное имя переменной */
?>
В данном случае интерпретатор видит переменную
$varname, после которой идёт оператор
конкатенации, а затем голая строка (то есть, не заключённая в
кавычки строка, не соответствующая ни одному из ключевых или
зарезервированных слов) 'ext'. Очевидно, что это не даст
ожидаемого результата.
По этой причине важно отметить, что PHP будет автоматически
заменять любые точки в именах, приходящих переменных на символы
подчёркивания.
Определение типов переменных
Поскольку PHP определяет типы переменных и преобразовывает их (как правило) по мере необходимости,
не всегда очевидно, какой тип имеет данная переменная в любой момент времени. PHP
содержит несколько функций, позволяющих определить тип
переменной, таких как: gettype(),
is_array(), is_float(),
is_int(), is_object() и
is_string(). Смотрите также раздел
Типы.
HTTP является текстовым протоколом, и большинство, если не всё, содержимое,
которое приходит в суперглобальные массивы,
например, $_POST и $_GET, останется в виде строк.
PHP не будет преобразовывать значения в определённый тип.
В приведённом ниже примере $_GET["var1"]
будет содержать строку "null", а $_GET["var2"] — строку "123".
/index.php?var1=null&var2=123