3

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

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

4

5 回答 5

2

尝试

setcookie("remember", $name, '/', $time);
于 2013-09-01T09:35:53.147 回答
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');
于 2013-09-01T09:46:17.747 回答
1

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

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

于 2013-09-03T10:54:34.623 回答
0

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

于 2013-09-01T09:35:16.517 回答
0

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

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

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

于 2017-05-11T13:05:21.373 回答