用户名和密码的开始会话

时间:2016-05-26 23:16:16

标签: php session post session-cookies

我试图启动一个启动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 &copy; 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>

2 个答案:

答案 0 :(得分:1)

你几乎就在那里。

验证名称密码有效后(在存储密码时使用password_hashpassword_verify以提高安全性),生成和保存唯一的会话ID:

session_regenerate_id();

执行此操作后,您可以将该会话ID保存到会话表中。每次用户更改状态(登录/注销或权限提升)时,建议您高度重新生成session_id。

我不会在会话中存储密码,也不会依赖用户名。

如果session_id与会话数据库中经过身份验证的会话的会话匹配,则会话进行身份验证。要结束会话,请从会话表中删除session_id并重新生成session_id:

unset($_SESSION['SESSIONKEY'];
session_regenerate_id();

这是实现它的最基本方法。有很多方法可以在会话中构建安全性,并建议对其进行增强,以防止会话劫持和其他类型的攻击等攻击。

补充阅读:

When and why I should use session_regenerate_id()?

答案 1 :(得分:0)

如果您从数据库获取数据,那么您可以根据用户名和密码获取数据,并将整个数据存储到会话数组中:

$_SESSION['user'] = mysql_query("select *from users where username = '"+$username+"' and password = '"+$password+"'");

并将用户名和密码存储在系统cookie中。 当你手动注销然后删除cookie。