如何进行下一步登录

时间:2019-03-29 16:59:46

标签: php mysql

我正在学习MySQL和PHP,并且试图建立一个简单的登录网页并与MySQL连接。 我已经使用HTML和CSS构建了该页面,还下载了PHP并安装了MySQL,我对如何组合这些内容感到困惑,当我输入密码和用户名时,它将进入成功页面。

我没有寻求答案,但需要一些建议来进行下一步。

1 个答案:

答案 0 :(得分:0)

请注意-我在这里编写SQL查询的方式可以进行SQL注入(see here to get the changes you would need to make

因此开始。您想要创建一个数据库表来存储您的用户,一个表单来创建用户以及一些代码以将数据查询到数据库中。

我将从这样的形式开始:

<form method="post" class="mt-3">
<input type="hidden" name="do" value="create" />
                <div class="form-group">
                    <label for="itemName">First Name</label>
                    <input type="text" class="form-control" name="firstName">
                </div>
                <div class="form-group">
                    <label for="serialNumber">Last Name</label>
                    <input type="text" class="form-control" name="lastName">
                </div>
                <div class="form-group">
                    <label for="serialNumber">Username</label>
                    <input type="text" class="form-control" name="userName">
                </div>
                <div class="form-group">
                    <label for="serialNumber">Password</label>
                    <input type="password" class="form-control" name="passWord">
                </div>
                <a id="create-member" class="btn btn-success text-white">Submit</a>
            </form>

然后,您需要一些代码,该代码将采用该表单中的值并将其转换为查询以将该信息添加到表中。

if(isset($_POST['do'])) && $_POST['do'] == 'create' 
{
    $firstName = $_POST['firstName'];
    $lastName = $_POST['lastName'];
    $username = $_POST['userName'];
    $password = password_hash($_POST['passWord'], PASSWORD_BCRYPT);

        $sql = "INSERT INTO members (first_name, last_name, username, password) VALUES ('".$firstName."', '".$lastName."', '".$username."', '".$password."')";
        mysqli_query($conn, $sql); //$conn is set in my header file and included into every page.
}

这几乎是创建用户并将其添加到表中的过程,显然,您必须将其分解并更改表中的值等。

  

接下来是验证登录名的情况。

首先,登录表单:

<form method="post">
        <input type="hidden" name="do" value="login" />
        <div class="form-group">
            <label for="usename">Username</label>
            <input type="text" class="form-control" id="username" name="username">
        </div>
        <div class="form-group">
            <label for="password">Password</label>
            <input type="password" class="form-control" id="password" name="password">
        </div>
        <button type="submit" class="btn btn-primary">Login</button>
    </form>

然后进行身份验证查询,这将在登录页面中获取信息,对输入的密码进行哈希处理,然后将其与数据库中的密码进行比较。

if (isset($_POST['do']) && $_POST['do'] == 'login')
{
        $username = $_POST['username'];
        $password = $_POST['password'];

        $sql = "SELECT id, first_name, last_name, password FROM members WHERE username= '$username'";
        $query = mysqli_query($conn, $sql) or die(mysqli_error($conn));

        if($query->num_rows == 0)
        {
            echo "Username or password incorrect";
        }else{
            $data = mysqli_fetch_array($query);
            if(!password_verify($password, $data['password']))
            {
                echo "Username or password incorrect";
            }else{
            session_regenerate_id();
            $_SESSION['loggedin'] = true;
            $_SESSION['username'] = $_POST['username'];
            $_SESSION['member_id'] = $data['id'];
            $_SESSION['first_name'] = $data['first_name'];
            $_SESSION['last_name'] = $data['last_name'];


            }
        }
    }
}
?>

不要担心底部的$ _SESSION变量,我只是那样设置所有用户数据,以便在其他页面上访问它更容易,然后我跟随着index.php页面的标题。在我的标头中,我还要检查是否将$ _SESSION ['loggedin']设置为true,否则将其重定向到登录页面(也请注意,用户可能位于登录页面上,您不想重定向错误)

这是我在该网站上的第一个详细答案,希望对您有所帮助:)