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未设置
答案 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'];
您应该删除输出中不必要的空格,以便在构建输出之前进行服务器端处理(包括标题修改)。
理想情况下,您不希望将两者混合使用。服务器端处理应该在构建输出之前进行,然后使用处理结果构建输出并发送给客户端。