如何一次通过PHP设置多个cookie?

时间:2017-12-14 05:28:58

标签: php cookies

好吧,伙计们,这是我第一次来这里,所以,嗨,社区。

我在一个小型学校项目中工作,要求我设置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吗?例如,在索引中保存用户名,然后更改背景颜色?

1 个答案:

答案 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和标题设置回相同或另一个页面。这不会导致该错误。 ☺