我试图启动一个启动php,允许用户输入用户名和密码并将其存储为cookie,这样当他们尝试再次登录时,它会存储密码,所以我可以开始一个会话,因为最终我想把它传递给另一个PHP作为帖子(以验证这是否是正确的密码)但我在开始会话时有点困惑,因为我不是很熟悉会话。 这是我到目前为止所拥有的
<?php
session_start();
$_SESSION["name"] = "";
$_SESSION["password"] = "";
?>
<!DOCTYPE html>
<form action="start.php" method="post">
<head>
<meta charset="utf-8" />
<title>Remember the Cow</title>
<link href="https://webster.cs.washington.edu/css/cow-provided.css" type="text/css" rel="stylesheet" />
<link href="cow.css" type="text/css" rel="stylesheet" />
<link href="https://webster.cs.washington.edu/images/todolist/favicon.ico" type="image/ico" rel="shortcut icon" />
</head>
<body>
<div class="headfoot">
<h1>
<img src="https://webster.cs.washington.edu/images/todolist/logo.gif" alt="logo" />
Remember<br />the Cow
</h1>
</div>
<div id="main">
<p>
The best way to manage your tasks. <br />
Never forget the cow (or anything else) again!
</p>
<p>
Log in now to manage your to-do list. <br />
If you do not have an account, one will be created for you.
</p>
<form id="loginform" action="login.php" method="post">
<div><input name="name" type="text" size="8" autofocus="autofocus" /> <strong>User Name</strong></div>
<div><input name="password" type="password" size="8" /> <strong>Password</strong></div>
<div><input type="submit" value="Log in" /></div>
</form>
<p>
<em>(last login from this computer was ???)</em>
</p>
</div>
<div class="headfoot">
<p>
<q>Remember The Cow is nice, but it's a total copy of another site.</q> - PCWorld<br />
All pages and content © Copyright CowPie Inc.
</p>
<div id="w3c">
<a href="https://webster.cs.washington.edu/validate-html.php">
<img src="https://webster.cs.washington.edu/images/w3c-html.png" alt="Valid HTML" /></a>
<a href="https://webster.cs.washington.edu/validate-css.php">
<img src="https://webster.cs.washington.edu/images/w3c-css.png" alt="Valid CSS" /></a>
</div>
</div>
</body>
</html>
答案 0 :(得分:1)
你几乎就在那里。
验证名称和密码有效后(在存储密码时使用password_hash和password_verify以提高安全性),生成和保存唯一的会话ID:
session_regenerate_id();
执行此操作后,您可以将该会话ID保存到会话表中。每次用户更改状态(登录/注销或权限提升)时,建议您高度重新生成session_id。
我不会在会话中存储密码,也不会依赖用户名。
如果session_id与会话数据库中经过身份验证的会话的会话匹配,则会话进行身份验证。要结束会话,请从会话表中删除session_id并重新生成session_id:
unset($_SESSION['SESSIONKEY'];
session_regenerate_id();
这是实现它的最基本方法。有很多方法可以在会话中构建安全性,并建议对其进行增强,以防止会话劫持和其他类型的攻击等攻击。
补充阅读:
答案 1 :(得分:0)
如果您从数据库获取数据,那么您可以根据用户名和密码获取数据,并将整个数据存储到会话数组中:
$_SESSION['user'] = mysql_query("select *from users where username = '"+$username+"' and password = '"+$password+"'");
并将用户名和密码存储在系统cookie中。 当你手动注销然后删除cookie。