2013-07-02 30 views
0

我在我的網站有這個錯誤:DOCTYPE在頁面的頭部導致session_problem

Warning: session_start() [function.session-start]: Cannot send session cache limiter - 
headers already sent (output started at /home/rentedco/public_html/try6.php:2) in 
/home/rentedco/public_html/try6.php on line 2 

我創建一個只包含其他頁面的beggining一個簡單的PHP文件:

<!DOCTYPE html> 
<?php session_start(); 
echo 'fsdf'; 
?> 

我發現如果我刪除DOCTYPE我不會再遇到這個問題了,我的問題是我不想通過刪除這個頭來毀掉其他的東西。 我可以刪除它嗎?我可以在session_start呼叫之後進行分配嗎?

回答

2

是的,將doctype放在那裏會將數據推送到PHP輸出緩衝區,但session_start()需要將cookie數據寫入標頭。 doctype是HTML頁面的一部分,而不是頭部,所以在session_start()之後放置它應該是安全的。

+0

謝謝你的回答。無論如何,我是否必須寫DOCTYPE?這個標籤是做什麼的? –

+0

Doctype定義瀏覽器應該如何解析HTML。當您只有<!DOCTYPE html>時,您已將頁面定義爲HTML5。以下是更多信息:http://www.w3.org/wiki/Doctypes_and_markup_styles – Neuticle

0

在session_start()應該總是在一開始寫,否則將無法正常工作一樣頭()功能。

0

會議開始之前有任何輸出被髮送到瀏覽器中調用的代碼更改

<?php session_start(); ?><!DOCTYPE html> 
<?php 
    echo "fsdf"; 
0

試試這個想法。您可以根據需要多次啓動和停止php解釋器,但session_start()必須在開始將任何html發送到瀏覽器之前發生。

<?php 
    session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
.... 
.... 
</head> 
<body> 
<?php 
    echo 'fsdf'; 
?> 
</body> 
</html>