PHP - Can't create cookies


PHP - Can't create cookies

我是一名初级PHP程序员,不会设置cookie。

我一直收到这个错误:

注意:未定义的索引:第28行D:''XAMPP''htdocs''Bank''verify.php中的用户

注意:未定义的索引:在第28行的D:''XAMPP''htdocs''Bank''verify.php中传递

在代码中,我只是从表单中设置一个值为$_POST['user']$_POST['pass']的cookie并将其打印出来,但它不起作用。

setcookie("user",$_POST['user'],3600);
setcookie("pass",$_POST['pass'],3600);
echo $_COOKIE["user"] . " " . $_COOKIE["pass"];  // This is line 28

这是我的表格:

<form action="verify.php" method="post">
    Username: <input name="user" /><br />
    Password: <input name="pass" type="password" /><br />
    <input type="submit" value="Submit" />
</form>

有人知道为什么会发生这种事吗?请帮忙。

谢谢。

下次访问页面时会使用Cookie。因此,有三个通用的解决方案: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);

,然后当你检查密码时,只需对其进行散列并比较散列。


2.解决方案是会话,但它只有在关闭浏览器后才能工作,然后整个会话都会被删除。
3.最好的解决方案可能是将用户+密码存储在mySQL数据库或服务器端的.txt文件中。不过,别忘了把它散列,因为即使在数据库中,也有人可以通过一些黑客手段窃取这些信息。即使你认为你的网络是安全的——安全总比抱歉好。
这就是你的解决方案。只是一个简短的提示:如果你想存储任何重要内容的密码,请始终对其进行哈希处理,最好使用盐水哈希。试着用谷歌搜索一下,互联网上有很多关于哈希的文章。查看此网站:http://php.net/manual/en/faq.passwords.php

setcookie();

告诉PHP在下次向浏览器发送响应时向浏览器发送cookie

$_COOKIE

是浏览器向PHP 发送请求时从浏览器收到的cookie

您正试图在相同的请求中设置和接收

编辑

PS我知道你只是在学习,但我希望你没有计划将用户id和密码存储在cookie中,这样互联网上的每个人都可以看到它们

$_COOKIE仅适用于在请求(从web客户端)中传递给脚本的cookie,而不是您在脚本中设置的要发送给客户端的cookie。因此,"user"answers"pass"将不会出现在$_COOKIE中,直到之后您将它们发送到客户端客户端将它们发送回。

此外,告诉我您没有在cookie中设置密码?这是非常糟糕的安全性,因为cookie的远程不安全。通常的技术是创建一个只在web服务器上存储数据的PHP会话,然后将会话id放入cookie中。有关PHP会话的信息,请参阅PHP在线手册。

您不能在同一请求中发送和接收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 开始