0

可能重复:
PHP 已发送的标头

我在尝试将变量从一个页面传递到另一个页面时遇到问题(php)我有第 1 页,当您访问它时会自动加载第 2 页(使用 jquery)。为了使第 2 页正常工作,我需要传递 2 个变量,所以这是我的方法:

on Page 1:
session_start();
$_SESSION['username'] = $username;
$_SESSION['user_id'] = $user_id;

on Page 2:
session_start();
$username = $_SESSION['username'];
$user_id = $_SESSION['user_id'] ;

在第一次加载时,它不起作用。如果我刷新,一切都很好。如果我转到另一台计算机或清除当前浏览器的缓存,我会遇到同样的问题,在第一次加载时,它不起作用。刷新后,一切都很好。

错误日志消息:

[01-Oct-2012 20:02:59] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /public_html/php/info.php:1) in /public_html/php/info.php on line 26

有谁知道这个问题的原因是什么?

4

2 回答 2

0

经典headers already sent错误*(如评论中所示)。问题是您在session_start()通过echo或常规 HTML(以及其他可能的输出方法)输出某些内容之后调用。

将您的session_start()呼叫移至两个/所有页面中脚本的最顶部,这应该可以解决您的问题。

*headers already sent正如我所说,错误是因为您在发送标头之前将数据输出到页面。在 Web 应用程序中,您必须先发送所有标头(包括会话标头),然后才能输出任何数据/内容。

于 2012-10-02T02:12:07.987 回答
0

会话处理需要 Cookie(一些例外情况,取决于您的服务器配置)。在发送任何其他信息之前,cookie 会在标头中发送。

您看到的错误消息是告诉您在执行 session_start() 之前发送了一些内容;

通常的嫌疑人之一是在第一行打开 PHP 标记 (<?php) 之前有空行。

有关更多详细信息,请参阅此问题

于 2012-10-02T02:12:29.653 回答