PHP: Can't Set Cookie


PHP: Can't Set Cookie

由于某些原因,我似乎无法在我的PHP文件中设置cookie。除了拒绝设置cookie之外,所有的代码都运行良好。我用不同的参数放置了不同版本的cookie设置,但似乎没有什么区别。除此之外,我可以在同一目录中的一个单独的PHP文件中使用同一行代码设置cookie。我试过把setcookie()放在不同的地方,但仍然得到了相同的结果。我是不是错过了什么?

<?php
$table_name="lfgs";
$name=$_POST['name'];
$event="[";
$level=$_POST['level'];
$comments=$_POST['comments'];
$hours=$_POST['hours']*60*60;
$minutes=$_POST['minutes']*60;
$time=$hours+$minutes+time();
setcookie("remember", $name, $time, 'www.domain.com', '/');
if(isset($_POST['event'])){
    if (is_array($_POST['event'])) {
        foreach($_POST['event'] as $value){
            $event = $event . "'"" . $value . "'",";
        }
    } else {
        $value = $_POST['event'];
        $event = $event . "'"" . $value . "'"]";
    }
} else {
    $event = "";
}
if($event[strlen($event)-1] == ',') {
    $event = substr_replace($event ,"]",-1);
}
$con=mysqli_connect("domain.com","username","password","database");
$req="INSERT INTO $table_name(name, event, level, comments, time) VALUES ('$name', '$event', '$level', '$comments', '$time')";
mysqli_query($con,$req);
mysqli_close($con);
foreach($_COOKIE as $c) {
    echo $c . "<br />";
}
?>

编辑:这是整个文件的所有代码。

根据php参考,使用setcookie函数的正确方法是

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

你没有交换$path和$domain参数吗?

尝试

setcookie("remember", $name, $time, '/', 'www.domain.com');

尝试

setcookie("remember", $name, '/', $time);

我不明白你想做什么,但它不会像你那样工作。永远记住:您在服务器端使用PHP。因此,要设置cookie,然后测试它是否有效,您总是需要两个步骤(因为您在服务器端):第一步是设置cookie。然后在下一个请求期间,您可以检查您的cookie是否包含在全局$_cookie数组中。如果是,那么可以,如果不是,那么mybe客户端/用户不允许设置cookie。

如果您需要"一步到位",那么您应该使用JavaScript。类似的事情:在提交表单时,设置cookie,然后传播提交操作(将数据发送到服务器)。JQuery支持设置和读取cookie的良好解决方案。

您确定php解释器由于某种原因没有在setcookie()调用之前发送字符吗?该函数发送一个HTTP标头,因此它必须在页面上的任何打印之前出现。

根据我的经验,如果您在页面上有任何活动会话,它将不允许您创建PHP cookie。开始一个新的空白页,并以此方式进行测试。

您应该能够在新的通用页面上设置cookie。然后返回已启动会话的另一个页面。在会话页面中回显该设置cookie的详细信息,您将获得存储的值,没有问题。

您可以调用cookie,但似乎无法在活动会话页面中创建它们。至少,我不能使用我当前的系统设置/config。