程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php Cannot modify header information-headers already sent by

php Cannot modify header information-headers already sent by

編輯:關於PHP編程

昨天在使用cookie時頁面報錯:php Cannot modify header information-headers already sent by了,下面我來總結關於報錯的解決辦法。

代碼

 代碼如下 復制代碼 <?php
ob_start();
setcookie("username","宋巖賓",time()+3600);
echo "the username is:".$HTTP_COOKIE_VARS["username"]."n";
echo "the username is:".$_COOKIE["username"]."n";
print_r($_COOKIE);
?>

Warning: Cannot modify header information - headers already sent by出錯的原因

我在php程序的頭部加了,

header("cache-control:no-cache,must-revalidate");

原因分析

在PHP裡Cookie的使用是有一些限制的。
1、使用setcookie必須在<html>標簽之前
2、使用setcookie之前,不可以使用echo輸入內容
3、直到網頁被加載完後,cookie才會出現
4、setcookie必須放到任何資料輸出浏覽器前,才送出
.....
由於上面的限制,在使用setcookie()函數時,學會遇到 "Undefined index"、"Cannot modify header information - headers already sent by"…等問題,解決辦法是在輸出內容之前,產生cookie

解決辦法

1在頁面頂部的php標簽中加入ob_start();

2在返回的信息下面加入ob_end_flush();

這樣就可以屏蔽錯誤信息的現實了


但有的朋友說上面辦法不行,後來我後來打開 php.ini 然後把 output_buffering 設為 on 。重起appache,OK。看來這才是解決辦法。


另外有朋友說是編碼問題,只要轉換文檔有uft-8就可以解決了,這裡就不介紹了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved