Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как избавиться от ошибки


Автор: korob2001 28.5.2006, 17:35
Привет!
Подскажите пожалуйста, как можно избавиться от ошибки:?
Цитата

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\rs\contact.php:1) in z:\home\localhost\www\rs\contact.php on line 109

Я так понимаю, что где-то уже проходит вывод, до вызова функции session_start(), но где? До нё находится несколько, глобальных, переменных, которым присваиваются значения и пользовательские функции, т.е. такой примерно код:
Код
<?php
$var1 = Array("one","two");
$var2 = (isset($_GET["lang"]) && ($_GET["lang"] === "fr")) ? "fr" : "nl";

function show_form() {
      // Показываем форму ввода
      include_once "tmpl/top.inc";
      include_once "tmpl/$lang/form.inc";
      include_once "tmpl/bot.inc";
}

function user_ctrl() {
      // Прверка полученных данных
}

session_start(); // Вот эта строка ему не нравится :(
if (isset($_POST["send"] )) {
    show_form();
} else {
    user_ctrl();
}

Пробовал поставить эту строку вначале, на одной строке с <?php, т.е. так:
Код
<?php session_start();
// Остальной код
?>

Получаю ту же ошибку, только теперь он мне указывает на первую строку. ;'(.
Сессия нужна для хранения зашифрованного, односторонним алгоритмом, защитного кода, на изображении.
Кстати, по генерации изображения тоже один вопрос, для него я наверное создам отдельный топик.  

Автор: Mal Hack 28.5.2006, 17:39
Пробелы, переводы строк до <?php убирай. 

Автор: korob2001 28.5.2006, 18:25
А их нет, я привёл весь файл от начала, до конца.
Но всё равно спасибо, так как это натолкнуло на мысль: Может проблема в том, что файл сохранил в кодировке UTF-8? Потому что когда перевёл его в UTF-8, при просмотре html кода виден один байт в виде квадратика, как раз там, в самом начале.
С другой стороны мне нужно, что бы он был в UTF-8, так как он работает со строками нидерландского и французского языков. ;((((( Мне нужно проверить в нём ввод пользователя, который может ввести и такие символы ëáàüê и т.д. Пробовал в шаблоне указать код Unicode как в Perl, т.е. \xEB, но что-то он не заработал. ;(((
Для этого создам сейчас отдельный топик. 

Автор: Mal Hack 28.5.2006, 18:57
Ты чем сохранял? У меня таких проблем не было. Значит там все-таки есть какой-то символ. 

Автор: korob2001 28.5.2006, 19:37
Сохранял в Блокноте (Windows XP Pro), если указать эти символы прямо в шаблон, то он предлагает сохранить файл в UTF-8, иначе символы Unicode будут утеряны. Как только исправил кодировку на ANSI, всё сразу заработало, но теперь проблема в том, что бы отловить символы которые не входят в ASCII, но они есть в кодировке latin1, эти символы есть во французском, нидерландском, немецком да и в других языках их тоже полно.  

Автор: Mal Hack 28.5.2006, 19:45
Работай в Zend и там по дефолту поставь UTF-8 и будет тебе счастье. Блокгнот это смерть. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)