一尘不染

setcookie,无法修改标头信息-标头已发送

php

我是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。


阅读 352

收藏
2020-05-29

共1个答案

一尘不染

警告很明显。

警告:无法修改标头信息-第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>标记以及任何空格)之前都先调用此函数。

setcookie在任何HTML出现之前移动该语句:

<?php
 $value = 'something from somewhere';

 setcookie("TestCookie", $value);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
....
2020-05-29