У setcookie() есть проблема с заголовком - без пробела, текста или чего-либо еще до тега <? php

Следующий код не имеет пробелов или текста перед открывающим тегом php. При применении я получаю предупреждение о том, что заголовок уже был вызван "в строке 3" (setcookie). Я в недоумении почему.

<?php
    $value = 'something from somewhere';
    setcookie("TestCookie", $value);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>

</head>
<body>

</body>

</html>

Спасибо за любую помощь.

1 ответ

Решение

Если вы сохранили файл как UTF-8 с BOM (Byte Order Mark), в начале файла выводятся три дополнительных символа.

Эти символы сообщают (тупым) приложениям, что это файл UTF-8.

Использование спецификации не является обязательным для большинства приложений.

http://en.wikipedia.org/wiki/Byte_order_mark

Если вы сохраните файл снова только без спецификации, все будет в порядке.

Не уверен, что это то, что происходит, не видя фактического файла, но оно того стоит.

Некоторые редакторы показывают, что это за файл. Я сам использую EditPlus в качестве редактора (Windows), и он показывает кодировку файла.

Другие вопросы по тегам