Почему не работает setcookie?

Пытаюсь реализовать простую авторизацию на сайте. Но setcookie не работает, выдаётся такое предупреждение:

Warning: Cannot modify header information - headers already sent by (output started at T:\home\localhost\www\TICSP\site\php\send_autorisation.php:1) in T:\home\localhost\www\TICSP\site\php\send_autorisation.php on line 8

Вот php код:

<?php
$login = filter_var(trim($_POST["login"]), FILTER_SANITIZE_STRING);
$password = filter_var(trim($_POST["password"]), FILTER_SANITIZE_STRING);
$mysql = new mysqli('localhost', 'root', '', 'ticsp');
$result = $mysql->query("SELECT * FROM `autorisation` WHERE `login` = '$login' AND `password` = '$password'");
$user = $result->fetch_assoc();
if (count($user) != 0) {
setcookie('admin', 'name', time() + 3600, "/");
echo "correct_data";
}
else {
echo "incorrect_data";
exit();
}
$mysql->close();
?>

Помогите, пожалуйста, разобраться в проблеме. Спасибо.
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 3
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
setcookie
Как и любой другой заголовок, cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться до остального вывода, включая вывод тегов <html> и <head>, а также пустые строки и пробельные символы.
Ответ написан
@d-sem
Выше в коде был вывод. После вывода - отправка заголовков ни на что не влияет.
Ответ написан
Проверь что кодировка файла UTF-8 без BOM. Это важно - Почитать про BOM Есть подозрение что перед установкой куки у тебя идет последовательность BOM. Просто переконвертируй файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы