2012-04-07 29 views
1

我目前正在使用PHP和jQuery進行遊戲,並且在某些時候我需要使用jQuery的.load()將PHP頁面加載到div中。該頁面會根據他們的登錄信息,賬戶ID等將一些玩家信息加載到$_SESSION["arrayname"]內的數組中。jQuery .load和PHP會話開始

它適用於所有網站,除了那些使用jQuery load()的網站。上的EasyPHP,我沒有錯誤,但在我的虛擬主機服務器的即時得到這樣的:

警告:在session_start()[function.session啓動]:無法發送會話緩存限制器 - 頭已經發送(輸出開始/fr/game/map.php:1)在上線FR /遊戲/ map.php 6

這裏是我的代碼:

<?php 
require_once("../../connectionRO.inc.php"); 

//used to check if we see the array in session, and i dont when i load it with jquery 
if(!ISSET($_SESSION["comptejeu"])) 
{ 
    require_once('../../classInfoCompte.php'); 
    session_start(); 
    require_once('../../lg.php'); 
    require_once("./glg.php"); 
} 

$ic = new infoCompte; 
    $ic = $_SESSION["comptejeu"]; 
?> 

據我所知,在這一點上很多的東西已經在加載前輸出到頁面。任何人都可以指向我一個更好的方式來檢索我需要從該數組中獲取的信息以從我的類構建我的對象?

謝謝。

+0

[Headers already already in php](http:// stackoverflow。問題/ 1183726/headers-already-sent-in-php) – GordonM 2012-04-07 16:41:49

回答

1

既然你收到此錯誤爲output started at /fr/game/map.php:1(注:行)我將會把錢花在你/fr/game/map.php開幕<?php標籤前有空格或BOM。

確保開頭<文件中的第一個字符。如果您的文件是UTF-8,請確保它是UTF-8 而不是 BOM,或將其轉換爲ASCII。

錯誤:

 

<?php 

右:

<?php 
+0

簡單但天才,沒有注意,因爲它給我第6行之前,而不是第1行,因爲我發佈它。非常感謝我的檢查,如果編輯器設置爲utf8 bom或utf w/o bom,那麼bom的東西總是麻煩。 ^^ – user1185703 2012-04-07 16:40:40

0

要麼有你的PHP文件中的一些空白,存在classInfoCompute.php一些空白或有一個函數/方法調用在此或classInfoCompute文件中觸發輸出。會話依賴於Cookie,Cookie依賴於HTTP頭。一旦輸出內容,標題已經發送,你不能發送一個新的。

Stack Overflow有很多關於這個問題的問題和答案,但它歸結爲在地毯下掃描問題(使用輸出緩衝),或者正確地修復問題(通過查找是什麼導致內容輸出在調用session_start之前將其刪除或稍後在腳本中移動它,或將session_start移動到腳本中的較早之前)。

如果您的腳本混合了HTML和PHP,請確保session_start發生在HTML的第一位之前。否則,你將不得不尋找空白空間。如果文件保存爲UTF-8,則文本編輯器可能會在文件的開頭附加一個不必要的字節順序標記(BOM)。確保您的文件沒有BOM保存,因爲它將被視爲內容並觸發輸出到客戶端(並在輸出開始時輸入一個奇怪的字符)。