有没有办法可以在html输出后设置cookie?根据PHP手册,setcookie()应该在输出之前设置.
我需要它用于我的投票系统,其中在成功的Mysql查询之后将设置cookie.我把它放在一个文件中.
big*_*gkm 10
您可以使用输出缓冲区,因此在脚本的顶部添加ob_start(),这将创建一个缓冲区,然后您可以设置cookie然后结束缓冲区并刷新到浏览器.
ob_start();
/* set cookie */
ob_end_flush();
Run Code Online (Sandbox Code Playgroud)
有没有办法可以在html输出后设置cookie?
技术上没有.如果您想设置cookie,您需要确保到目前为止尚未向浏览器发送任何输出.
根据PHP手册
setcookie()应该在输出之前设置.
这是正确的,否则它将无法正常工作.所以我甚至会说必须,不仅应该.
我需要它用于我的投票系统,其中在成功的mysql查询之后将设置cookie.
一个成功的mysql查询就不会创建任何输出.如果启用了错误报告,则只有失败的mysql查询.所以我想知道你是否真的遇到了一个具体的问题.
mysql查询本身不应该阻止你使用setcookie.
如果您在使用之前已经完成HTML输出,则setcookie需要找到HTML输出开始的位置.在该行之上放置ob_startDocs函数,它将启动输出缓冲.
启用输出缓冲后,您的程序仍然可以"输出"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>
Run Code Online (Sandbox Code Playgroud)
当脚本完成时,输出缓冲区将自动发送到浏览器,因此您不需要关心更多,其余的工作将自动进行.
| 归档时间: |
|
| 查看次数: |
9381 次 |
| 最近记录: |