出于某种原因,我似乎无法在我的一个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 />";
}
?>
编辑:这是整个文件的所有代码。
答案 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。至少,我不能使用我当前的系统设置/配置。