会话和cookie在同一个PHP文件中?

时间:2009-12-10 02:29:19

标签: php session cookies

我不能在同一个PHP文件中设置会话和cookie吗?

如果我在设置会话后设置了cookie,告诉我标题已经发送,我收到错误消息。

如果我在cookie之后设置会话,我什么也得不到,但似乎不能正常工作。

2 个答案:

答案 0 :(得分:4)

简短回答是肯定的 - 您可以在同一个PHP文件中设置SESSION和COOKIE数据。

答案越长:

  • Cookie数据在页面标题中发送。
  • 将标头发送到客户端后,您无法设置Cookie。
  • 只要您开始向客户端输出任何数据(即:浏览器),就会发送标题。

在您的情况下,您可能已经发送标题和/或开始将数据输出到您设置SESSION数据的同一位置的客户端。

有关详细信息,请参阅the PHP manual: Cookies。特别引用:

“Cookie是HTTP标头的一部分,因此必须在将任何输出发送到浏览器之前调用setcookie()。这与header()具有相同的限制。您可以使用输出缓冲函数来延迟脚本输出,直到您决定是否设置任何cookie或发送任何标题。“

如果您需要进一步的帮助 - 请尝试插入您遇到问题的示例代码/页面。

答案 1 :(得分:2)

您始终可以在同一页面上设置Cookie会话。但是,您应该始终在生成任何输出之前启动会话或设置cookie。您获得的错误消息是因为您在开始会话(即session_start())或设置cookie之前回显出一个HTML或字符串块(即setcookie()函数)。

有关更详细的说明,请参阅以下内容中的“说明”部分: http://php.net/manual/en/function.setcookie.php

和'注释'部分: http://php.net/manual/en/function.session-start.php