我是PHP的新手,我刚刚练习了PHP setcookie()并失败了。
http:// localhost / test / 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>
http:// localhost / test / view.php
<?php // I plan to view the cookie value via view.php echo $_COOKIE["TestCookie"]; ?>
但是我无法运行index.php,像这样的IE警告。
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
毫无疑问,我启用了IE 6 cookie。
我上面的程序有什么问题吗?谢谢。
使用WinXP OS和XAMPP 1.7.3。
警告很明显。
警告:无法修改标头信息-第12行的C:\ xampp \ htdocs \ test \ index.php中已经发送过的标头(输出从C:\ xampp \ htdocs \ test \ index.php:9开始)
Cookie在HTTP响应标头中发送。由于HTML内容已经启动,因此您无法返回到标题并添加cookie。
从http://php.net/setcookie:
setcookie() 定义要与其他HTTP标头一起发送的cookie。与其他标头一样,必须在脚本的任何输出 之前 发送cookie (这是协议限制)。这要求您在所有输出(包括<html>和<head>标记以及任何空格)之前都先调用此函数。
<html>
<head>
setcookie在任何HTML出现之前移动该语句:
setcookie
<?php $value = 'something from somewhere'; setcookie("TestCookie", $value); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ....