2009-09-11 90 views
0

當會話的工作,你需要聲明的session_start()或ob_start()?這樣做或不這樣做的優點是什麼?使用sessions - PHP

謝謝!

回答

6

session_start()必須用於存儲和從$ _SESSION全局讀。

ob_start()是從會話完全獨立。 ob_start()觸發輸出緩衝,將所有輸出存儲在緩衝區中供以後使用。當PHP腳本結束時,緩衝區會自動刷新給用戶。或者,您可以獲取,執行中期緩衝區的內容和調整的內容。看下面的例子。從php.net

實施例:

<?php 
function callback($buffer) 
{ 
    // replace all the apples with oranges 
    return (str_replace("apples", "oranges", $buffer)); 
} 

ob_start("callback"); 

?> 
<html> 
<body> 
<p>It's like comparing apples to oranges.</p> 
</body> 
</html> 
<?php 

ob_end_flush(); 

?> 

輸出:

<html> 
<body> 
<p>It's like comparing oranges to oranges.</p> 
</body> 
</html> 
+0

謝謝。這是一種更能說出我想要的東西的方式。 – 2009-09-11 14:03:50

+0

謝謝你的幫助!現在更有意義了。將來會檢查PHP.net – Petrogad 2009-09-11 14:09:55

1

從PHP手冊

session_start() - 初始化會話數據

SUMMARY:

在session_start()創建一個會話或 恢復基於該被真實經由請求傳遞 ,如GET,POST,或 cookie中的 當前會話ID的電流之一。

如果要使用命名會話 ,則必須在調用session_start()之前調用session_name(),然後調用 。

當 trans-sid啓用時,session_start()將註冊內部 用於URL重寫的輸出處理程序。如果用戶使用 ob_gzhandler或像 ob_start(),輸出 處理程序的順序是正確 輸出重要。例如,用戶必須 會議 開始之前註冊ob_gzhandler。