Параметр $expire задает timestamp, который, например, может быть сформирован функциями time() или mktime().
Параметр $secure говорит о том, что величина Cookie может передаваться только через безопасное HTTPS-соединение.
Примеры:
// Cookie на одну сессию, т.е. до закрытия браузера
SetCookie("TextCookie","value");
// Эти Cookies уничтожаются браузером через 1 час после установки
SetCookie("TextCookie",$val,time()+3600);
SetCookie("TextCookie",$val,time()+3600,"/~rasmus/",".utoronto.ca",1);
После вызова SetCookie() только что созданный Cookie сразу появляется среди глобальных переменных как переменная с заданным в параметре $name именем. Она появиться и при следующем запуске сценария - даже если SetCookie() в нем и не будет вызвана.
SSI и функция virtual()
Немного теории
Для одного и того же документа в Apache нельзя применять два "обработчика". Иными словами, действует принцип: либо PHP, либо SSI.
Однако в PHP имеются определенные средства для "эмуляции" SSI-конструкции include virtual.
Конструкция include virtual загружает файл, URL которого указан у нее в параметрах, обрабатывает его нужным обработчиком и выводит в браузер. То есть все происходит так, будто указанный URL был затребован виртуальным браузером. Большинство SSI-файлов ограничиваются использованием этой возможности.
virtual
Имитация include virtual.
Синтаксис:
int virtual(string $url)
Функция virtual() представляет собой процедуру, которая может поддерживаться только в случае, если PHP установлен как модуль Apache. Она делает то же самое, что и SSI-инструкция <-- #include virtual=... -->. Иными словами, она генерирует новый запрос серверу, обрабатываемый им обычным образом, а затем выводит данные в стандартный поток вывода.
Чаше всего функция virtual() используется для запуска внешних CGI-сценариев, написанных на другом языке программирования, или же для обработки SSI-файлов более сложной структуры. В случае, если запускается сценарий, он должен генерировать правильные HTTP-заголовки, иначе будет выведено сообщение об ошибке. Для включения обычных PHP-файлов с участками кода функция virtual() неприменима - это выполняет оператор include.
Управление выводом
Данная группа функций позволяет управлять тем, как PHP при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.)
Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только на функции, подобные echo() и HTML-тексту между блоками PHP-кода.
<?php
ob_start();
echo "Hellon"
setcookie("cookiename", "cookiedata");
ob_end_flush();
?>
В примере выше вывод командой echo() будет сохранен в буфере вывода до вызова функции ob_end_flush(). В то же время вызов setcookie() успешно сохраняет cookie, не вызывая ошибки.
Введение
Данная группа функций позволяет управлять тем, как PHP при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.)
Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только на функции, подобные echo() и HTML-тексту между блоками PHP-кода.
<?php
ob_start();
echo "Hellon"
setcookie("cookiename", "cookiedata");
ob_end_flush();
?>
В примере выше вывод командой echo() будет сохранен в буфере вывода до вызова функции ob_end_flush(). В то же время вызов setcookie() успешно сохраняет cookie, не вызывая ошибки.
Функции управления выводом
ob_start
Включение буферизации вывода.
Синтаксис:
void ob_start([string output_callback])
После вызова этой функции включается буферизация вывода и, пока она активна, никакие из выводящихся данных не будут посланы браузеру, а будут сохраняться во внутреннем буфере PHP.
Содержимое буфера может быть скопировано в строковую переменную функцией ob_get_contents(). Для вывода содержимого из буфера используется функция ob_end_flush(). Удалить содержимое буфера позволяет функция ob_end_clean().
В аргументе output_callback можно указать функцию, которая будет автоматически вызываться при выводе содержимого буфера. Обычно это используется для модификации содержимого буфера перед выводом (например, сжатия). Тогда при вызове функции ob_end_flush() в указанную функцию будет передаваться содержимое буфера, а то, что она возвратит, будет выведено (заметьте, сама функция не должна ничего выводить).
Буферизация может быть вложенной, и тогда она обрабатывается соответственно вложенности; и содержимое, выводимое из буфера нижнего уровня, будет включаться в буфер верхнего уровня. Не забывайте, что для вывода всего буферизованного содержимого необходимо вызывать функцию ob_end_flush() столько же раз, сколько была вызвана ob_start().