PHP:无法设置Cookie

时间:2013-09-01 09:30:29

标签: php cookies

出于某种原因,我似乎无法在我的一个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 />";
}
?>

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

5 个答案:

答案 0 :(得分:2)

根据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');

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

如果你需要在&#34;一步&#34;中进行,你应该使用JavaScript。像这样的东西: 在提交表单时,设置cookie然后传播提交操作(将数据发送到服务器)。 JQuery支持设置和读取cookie的良好解决方案。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

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