Cookie未被设置

时间:2012-05-19 12:30:57

标签: php cookies

你能帮帮我吗?我的网站没有设置以下简单的cookie。虽然其他一些登录脚本可以,但这个不起作用。感谢

test.php的

...

<form action="test2.php" method="post">
        Email: <br />
        <input type="email" name="email" value=""/> <br />
        <input type="submit" name="submit" value="Next"/> 
</form>

...

test2.php

<?php ob_start(); ?>

<?php
// call the header of the page
require('header.html');

// connect to database
require "connect.php";
?>

<?php
    $email = $_POST['email'];

    // set cookie
    $one_hour = time() + 3600;
    $set = setcookie(user_email, $email, $one_hour);

    if($set == TRUE) {
        print '<p> Cookie set</p>';
    } else {
        print '<p> Cookie not set</p>';
    }

// call footer of the page
require('footer.html');
?>

<?php ob_flush(); ?>

运行上述脚本后,出现此错误:

警告:无法修改标题信息 - 第16行/websites/public_html/test2.php中已经发送的标题(输出从/websites/public_html/test2.php:1开始)

Cookie未设置

  • PS:我的剧本第16行是“$ set = setcookie(email_noaccount,$ email,$ hr);”

2 个答案:

答案 0 :(得分:2)

只需按照以下方式更改上面的代码,然后尝试在require()

之后放置ob_start()
<?php
require "connect.php";
require('header.html');
?>
<?php ob_start(); ?>

答案 1 :(得分:0)

您需要先将内容发送到输出缓冲区:

<?php ob_start(); ?>
  <--- right here
<?php
// call the header of the page
require('header.html');

// connect to database
require "connect.php";
?>
  <--- and right here
<?php
    $email = $_POST['email'];

您应该删除输出中不必要的空格,以便在构建输出之前进行服务器端处理(包括标题修改)。

理想情况下,您不希望将两者混合使用。服务器端处理应该在构建输出之前进行,然后使用处理结果构建输出并发送给客户端。