网站上线时无法创建cookie

时间:2016-05-03 17:30:10

标签: php cookies

当我尝试使用PHP创建cookie时,在网站联机时不会保存它们。 当我在本地主机上时,一切正常。

例如:

setcookie('user_register', 'username', time() + 3600, '/');

我该如何解决这个问题? cpanel中是否有任何配置禁用cookie创建?

三江源

3 个答案:

答案 0 :(得分:0)

下次访问该页面时会使用Cookie。所以有3种通用解决方案:1。将它保存到cookie中,并且第一次只是回显POST变量而不是COOKIE。代码如下所示:

setcookie('user', $_POST['user'], time()+3600); // notice time() function
setcookie('pass', $_POST['pass'], time()+3600); // you cant use absolute value here

if (!isset($_COOKIE['user'])) echo $_POST['user'] . ' ' . $_POST['pass'];
    else echo $_COOKIE['user'] . ' ' . $_COOKIE['pass'];

,但如果你真的想在cookie中存储密码(非常糟糕的主意),那么至少哈希吧。带散列的代码可能如下所示:

setcookie('pass', hash(whirlpool/*algorithm*/, $_POST['pass']/*text*/), time()+3600);

,然后当你检查密码时,只需将其哈希并比较哈希值。

答案 1 :(得分:0)

您无法在同一请求中发送和接收Cookie。这是您应该尝试的修改

if(isset($_POST['user']) && isset($_POST['pass'])){

setcookie("user",$_POST['user'],3600);
setcookie("pass",$_POST['pass'],3600);

header("location:".$_SERVER['PHP_SELF']);

}
if(isset($_COOKIE['user']) && isset($_COOKIE['user']))
{
echo $_COOKIE["user"] . " " . $_COOKIE["pass"];  // This is line 28

}

但是,建议使用会话。首先浏览PHP_SESSION

答案 2 :(得分:0)

你说它适用于localhost,它提醒我认为你已经将setcookie放在输出下面,例如:

<?php
// top of file
Echo "saving cookie";
setcookie('user', 'username', 3600, '/');
?>

这可能适用于localhost,但在真正的php服务器上总会失败 Setcookie是header,必须放在手册http://php.net/manual/en/function.setcookie.php

中所述的任何输出之前

要使上面的代码工作,您需要选择echo和setcookie的位置,以便它首先设置cookie然后输出文本:

<?php
// top of file
setcookie('user', 'username', 3600, '/');
Echo "saving cookie";
?>

然后阅读cookie,您需要转到新页面或刷新页面 在php中,不能同时设置和读取Cookie 因此,要完成代码,我们可以这样做:

<?php
// top of file
If($_COOKIE(['user']){     
   Echo $_COOKIE(['user']);
}Else{
   setcookie('user', 'username', 3600, '/');
   Echo "saving cookie";
}
?>

现在,您可以设置cookie并在刷新页面时在同一页面上阅读它。