|
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(前提是有管理權限)
這樣就可以解決問題了 |
|