【发布时间】:2009-12-10 02:29:18
【问题描述】:
我不能在同一个 PHP 文件中设置会话和 cookie 吗?
如果我在设置会话后设置 cookie 并告诉我标头已发送,则会收到错误消息。
如果我在 cookie 之后设置会话,我什么也得不到,但似乎效果不佳。
【问题讨论】:
-
你是如何设置会话的?您应该提供您的代码,以便我们了解发生了什么。
-
你能贴出你正在使用的代码吗?
我不能在同一个 PHP 文件中设置会话和 cookie 吗?
如果我在设置会话后设置 cookie 并告诉我标头已发送,则会收到错误消息。
如果我在 cookie 之后设置会话,我什么也得不到,但似乎效果不佳。
【问题讨论】:
简短回答是肯定的 - 您可以在同一个 PHP 文件中设置 SESSION 和 COOKIE 数据。
更长的答案:
在您的情况下,您可能已在设置 SESSION 数据的同一位置发送标头和/或开始向客户端输出数据。
请参阅the PHP manual: Cookies 了解更多详情。特别是引用:
"cookie 是 HTTP 标头的一部分,因此必须在将任何输出发送到浏览器之前调用 setcookie()。这与 header() 具有相同的限制。您可以使用输出缓冲功能来延迟脚本输出,直到您决定是否设置任何 cookie 或发送任何标头。”
如果您需要进一步的帮助 - 尝试插入您遇到问题的示例代码/页面。
【讨论】:
您始终可以在同一页面上的 cookie 上设置会话。但是,您应该始终在生成任何输出之前启动会话或设置 cookie。您收到的错误消息是因为您在启动会话(即 session_start())或设置 cookie(即setcookie())。
有关更详细的说明,请参阅以下中的“说明”部分: http://php.net/manual/en/function.setcookie.php
和“注释”部分: http://php.net/manual/en/function.session-start.php
【讨论】: