| 
 | 
 
 
setcookie 出現 Warning: 
Cannot modify header information - headers already sent by 
 
SESSION及COOKIE真的很龜毛,兩各規則卻相反,但是又不得不用,只好想辦法處理了 
 
 
範例如下: 
index.php 
 
 
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
 
 - <html> 
 
 -     <head> 
 
 -         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 
 -         <title></title> 
 
  
-     </head> 
 
 -     <body> 
 
 -      <?php 
 
 -      $value = 'something from somewhere'; 
 
  
-      setcookie("TestCookie", $value); 
 
 -      ?> 
 
 -     </body>
 
 - </html> 
 
 
  複製代碼 但是IE8出現 
Warning: 
Cannot modify header information - headers already sent by 
(output started at C:\xampp\htdocs\test\index.php:9) 
in C:\xampp\htdocs\test\index.php on line 12 
 
 
 
這解決方法有三種 
1.COOKIE必須滿足條件再所有訊息未發出之前就必須設定 
如: 
 
- <?php
 
 - $value = 'something from somewhere';
 
 - setcookie("TestCookie", $value); 
 
 - ?> 
 
 - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> .... 
 
  複製代碼 
 
2.程式檔案最上面加上ob_start();及最下面加上ob_end_flush(); 
如: 
- <?php
 
 - ob_start();
 
 - // Initiate the output buffer
 
 - ?> 
 
 - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
 - <html>
 
 - <head>
 
 - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
 - <title></title>
 
 - </head>
 
 - <body>
 
 - <?php
 
 - $value = 'something from somewhere'; 
 
 - setcookie("TestCookie", $value); 
 
 - ?> 
 
 - </body> 
 
 - </html> 
 
 - <?php 
 
 - ob_end_flush(); 
 
 - // Flush the output from the buffer 
 
 - ?>
 
  複製代碼 
 
第三種 
修改php.ini(前提是有管理權限) 
 
 
這樣就可以解決問題了 |   
 
 
 
 |