2012-10-02 283 views
0

可能重复:
Headers already sent by 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 

没有任何人有一个想法是什么这个问题的原因是什么?

+0

在页面1上,它不会显示'$ username'被设置。 –

+0

你打开了错误报告和/或检查了你的日志文件吗? – deceze

+0

解释'我有第1页,当你访问它时自动加载第2页? – xdazz

回答

0

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

将您的session_start()调用转到所有页面中脚本的最顶部,这可以解决您的问题。

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

0

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

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

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

See this question了解更多详情。

相关问题