PHP:无法设置cookie

时间:2015-03-24 18:40:50

标签: php html cookies

我想设置一个cookie,但它不会工作。我是PHP的新手,但我在互联网上搜索如何设置cookie,但它不起作用。

<div id="content">
<?php
    if(isset($_GET['search-item']) && !isset($_COOKIE["searchRequest"])) {
        setcookie("searchRequest", $_GET['search-item']);
        include 'search_engine.php';
    }
    else {
        $page = $_COOKIE['page'];
        if(isset($page)){
            require_once $page;
        }
        else {
            require_once 'startpage.php';
        }
    }

?>
</div>

我真的不知道我做错了什么:(有人可以帮助我并解释为什么这不起作用。其他一切都完美无缺

1 个答案:

答案 0 :(得分:2)

首先启用错误报告:

error_reporting(E_ALL);
ini_set('display_errors', 1);

然后您应该看到以下内容:

 PHP Warning: Cannot modify header information - headers already sent 

因为你无法在setcookie之前输出任何内容,而且你在这里:

<div id="content">

手册说:

  

与其他标题一样,Cookie必须在您的任何输出之前发送   脚本(这是一个协议限制)。这要求你放置   在任何输出之前调用此函数,包括和    标签以及任何空格。

设置Cookie后移动它:

<?php
    if(isset($_GET['search-item']) && !isset($_COOKIE["searchRequest"])) {
        setcookie("searchRequest", $_GET['search-item']);
        echo '<div id="content">';
        include 'search_engine.php';
    }else{
        echo '<div id="content">';
        if(isset($_COOKIE['page'])){
            $page = $_COOKIE['page'];
            require_once $page;
        }else{
            require_once 'startpage.php';
        }
    }
    echo '</div>';
?>

请注意:包含来自cookie的文件是不安全的,我希望您只是进行实验,而且它不是严格代码的一部分。