Есть ли способ, которым я могу установить cookie после вывода html?
Технически нет. Если вы хотите установить cookie-файл, вам нужно убедиться, что в браузер пока не было отправлено ни одного вывода.
В соответствии с руководством по PHP setcookie()
должен быть установлен ДО вывода.
Это правильно, иначе это не сработает. Так что я бы даже сказал должен , а не только должен .
Мне это нужно для моей системы голосования, в которой после успешного запроса MySQL будет установлен файл cookie.
Успешный запрос MySQL сам по себе не приведет к выводу. Только неудачный запрос mysql будет, если включен отчет об ошибках. Поэтому мне интересно, действительно ли вы столкнулись с конкретной проблемой или нет.
Сам запрос MySQL не должен мешать вам использовать setcookie
.
Если вы уже выполнили вывод HTML до использования setcookie
, вам нужно найти место, где начался вывод HTML. Над этой линией разместите функцию ob_start
Документы , которая начнет буферизацию вывода.
При включенной буферизации вывода ваша программа все еще может «выводить» HTML, но она не будет отправлена немедленно. Тогда вы сможете без проблем звонить setcookie
:
<?php ob_start(); ?>
<html><body>
<?php
$result = mysql_run_query($query);
echo '<h1>Your Voting Results</h1>';
output_voting_result($result);
set_cookie('vote', $result['id']);
?>
</body></html>
Выходной буфер будет автоматически отправлен в браузер, когда ваш скрипт завершит работу, так что вам не нужно больше заботиться о нем, остальное работает автоматически.