2012-10-02 165 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瞭解更多詳情。

相關問題