由于某些原因,我似乎无法在我的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。