好吧,伙计们,这是我第一次来这里,所以,嗨,社区。 p>
我在一个小型学校项目中工作,要求我设置2个不同的cookie(一个用于保存用户名,另一个用于更改背景颜色),正如问题标题所示,它仅限于PHP,所以我经常收到:\“无法修改标题信息 - 已发送的标题”。所以,我正努力做到这一点。
<?php
setcookie('name', $_REQUEST['name'], time()+60*60);
setcookie('color', $_REQUEST['color'], time()+60*60);
header("location:name_of_the_web");
?>
因此,在我的索引页面中,我询问了请求信息,颜色和名称。
<?php
echo "<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Temario</title>
</head>
<body>";
if(!isset($_COOKIE['name']) && !isset($_COOKIE['color'])){
echo "<form method='post' action='cookies.php'>
...//it keeps going with the form to fill it.
?>
我想知道当时是否有其他方式要求同时使用这两种cookie?或者如果这是错的?或者我可能做错了所以它向我发送标题修改错误?
THX。
添加了: 我刚刚发现,当我使用两者时,错误就出现了 \ setcookies(args); \当我只使用其中一个时它运行正常,那么,我可以在不同时刻请求更改cookie吗?例如,在索引中保存用户名,然后更改背景颜色?
答案 0 :(得分:1)
所以你正在接受&#34;无法修改标题信息 - 标题已经发送&#34;。 如果在标题修改之前已经在页面上打印了.php文件的输出,则这是php页面中的错误原因。
实施例 如果您尝试执行类似
的操作<?php
echo "hello";
header("location: anotherPage.php");
?>
或者
<h1> hello <h1/>
<?php
header("location: anotherPage.php");
?>
然后你会在两种情况下都得到错误。因为echo语句在header()调用之前在屏幕上打印了一些内容。
所以你必须记住在header()调用之前不应该在页面上打印任何内容。
否则您的代码是完美的
<?php
setcookie('name', $_REQUEST['name'], time()+60*60);
setcookie('color', $_REQUEST['color'], time()+60*60);
header("location:name_of_the_web");
?>
请记住,不要在html上或在同一个.php文件上的php上打印页面上的任何内容。
您可以使用表单从当前页面运行另一个php页面,然后将Cookie和标题设置回相同或另一个页面。这不会导致该错误。 ☺