2011-09-17 124 views
3

我有兩個共享主機。 我的問題與調用session_start()相關。 在我的本地主機和我的共享主機之一。會話開始適用於用戶注意:不能調用標題。然後我用寫下面的代碼:什麼是調用session_start的正確方法()

<?php 
if(! isset($_SESSION)){ 
session_start() 
} 
?> 

但在另一臺主機上,它仍然回聲消息「注意:無法啓動會話()......」 也是我的問題,會議沒有開始在第一次訪問。當我再次刷新我的瀏覽器窗口,然後開始會話。客戶端和服務器端的關係是什麼?我的session_start()又出了什麼問題?請幫幫我。

有人可以告訴我什麼是調用session_start()永遠不會失敗的正確方法。我應該在哪裏打電話。非常頂部的頁面或配置文件中的任何地方。一個小例子肯定會對我有所幫助。

+1

錯誤的完整輸出是什麼?看來你的腳本已經在session_start()前發送數據 – Tom

回答

8

兩個簡單的事情:

1.總是調用session_start無條件。

2.在頁面上輸出任何內容之前,請務必致電session_start

所以,你應該做這樣的:

<?php 
session_start(); 

// and now anything else 

特別是,要知道,你可以違反指令#2在許多不同的方式,例如由:

  • 明確自己打印任何與echo
  • 任何字符在你的PHP腳本的所有<?php標籤
  • 前計有其他腳本,做了以上

SO上有lots and lots of questions這個描述點#2和如何解決它。

+0

如果你不打算改變會話變量,並且你的會話管理系統使用apache是​​基於文件的總是調用session_write_close(); – Ishmael

相關問題