2010-12-03 68 views
1

我已經用PHP編寫了一個應用程序。它包括
1:登錄表格
2:歡迎頁面
3:註銷表單被重定向到登錄表單。

My register_global =在php.ini中打開。PHP標籤之前的空間

我的應用程序在LAMP和WAMP上正常工作。但它沒有在活動服務器上設置會話。

但是,在逐行檢查後,在會話設置文件中,在啓動之前有單個空間'<?PHP ...... ?>'。刪除該空間後,我的應用程序在實時服務器上正常工作。

在沒有設置會話的‘<?PHP ...... ?>'之前,空間背後的原因是什麼?

+0

請注意,解決此問題的方法(在登錄點之外的任何文件中)都是爲了啓用輸出緩衝。請參閱:http://www.php.net/manual/en/function.ob-start.php – 2010-12-03 13:19:52

回答

5

的空間是輸出,即發送到瀏覽器。爲了打開一個會話,你需要發送一個所謂的HTTP頭,在輸出任何東西之前你需要做。這就是爲什麼它不起作用。您的錯誤消息可能是「頭文件已發送」。

1

發送響應頭之前,您不能發送任何內容;會話將在響應頭中發送。由於您事先發送了空格,因此無法啓動會話。

從關於session_start的文檔中,「要使用基於cookie的會話,必須在向瀏覽器輸出任何內容之前調用session_start()」。這包括開始時的單個空間。

基本上,在任何腳本的第一件事情應該總是<?php