2015-01-27 4 views
0

Согласно phpmanual http://php.net/manual/en/function.setcookie.php Если выход существует до вызова этой функции, setcookie() завершит сбой и вернет FALSE.Возвращаемое значение setcookie() в php

<?php 
echo "fail"; 
echo setcookie("stack", "overflow")? "pass" : "fail"; 

он должен выводить failfail, поскольку я выводил что-то раньше, чем setcookie() в скрипте.

К сожалению, он выдает провал.

Почему?

+0

Поскольку печенье был установлен ?! Требуется только 1 параметр в соответствии с руководством – Rizier123

+0

@ Rizier123 Это его вопрос: почему он настраивает файл cookie, когда руководство говорит, что это не должно быть? – Barmar

+2

Как правило, вывод буферизуется в некоторой степени веб-серверами, а не отправляется байтом по байту, когда вы его эхо-сигнал; так что может случиться так, что такой небольшой вывод, как «fail», еще не отправлен в браузер, поэтому сервер все еще способен отправлять заголовки перед выходом –

ответ

1

Результат скрипта кэшируется с использованием small buffer (по умолчанию 4 KiB). Это позволяет использовать трюки, подобные тому, который выставлен вашим вопросом, когда скрипт отправляет некоторые заголовки после того, как он выводит небольшое количество текста.

Проверьте php.ini на установку output_buffering.

0

//// //// решена output_buffering была включена по умолчанию в php.ini я установил его от теперь выводит failfail

благодаря Йерун