将变量从一个页面传递到另一个页面

时间:2012-10-02 01:46:19

标签: php session-variables

  

可能重复:
  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

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

2 个答案:

答案 0 :(得分:0)

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

将您的session_start()来电转移到两个/所有页面的脚本顶部,这样可以解决您的问题。

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

答案 1 :(得分:0)

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

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

通常的嫌疑人之一是在第一行打开PHP标签(&lt;?php)之前有空白行。

See this question了解详情。