Переменные из внешних источников
  
  
   HTTP Cookies
   
    PHP прозрачно поддерживает блоки данных cookies по HTTP-протоколу в соответствии с требованиями стандарта
    » 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(). Подробнее о типах данных, которые
    поддерживает PHP, рассказывает раздел
    «Типы».
   
   
    HTTP — текстовый протокол, и большая, если не вся, часть содержимого,
    которое попадает в суперглобальные массивы
    наподобие $_POST и $_GET, останется в виде строк.
    PHP не будет преобразовывать значения в конкретный тип.
    В приведённом примере элемент $_GET["var1"]
    будет содержать строку «null», а элемент $_GET["var2"] — строку «123».
    
/index.php?var1=null&var2=123