当我尝试使用PHP创建cookie时,在网站联机时不会保存它们。 当我在本地主机上时,一切正常。
例如:
setcookie('user_register', 'username', time() + 3600, '/');
我该如何解决这个问题? cpanel中是否有任何配置禁用cookie创建?
三江源
答案 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并在刷新页面时在同一页面上阅读它。