我正在学习 MySQL 和 PHP,我试图建立一个简单的登录网页并与 MySQL 连接。我已经使用 HTML 和 CSS 构建了页面,我也下载了 PHP 并安装了 MySQL,我对如何结合这些东西感到困惑,当我输入密码和用户名时,它会转到成功页面。
我不寻求答案,但需要下一步的一些建议。
请注意-我的 SQL 查询在这里写的方式是开放的 SQL 注入(see here to get the changes you would need to make)
所以开始。你想创建一个数据库表来存储你的用户,一个表单来创建用户,以及一些代码来将数据查询到数据库中。
我会从这样的形式开始:
<form metd="post" cl="mt-3">
<input type="hidden" name="do" value="create" />
<div cl="form-group">
<label for="itemName">First Name</label>
<input type="text" cl="form-control" name="firstName">
</div>
<div cl="form-group">
<label for="serialNumber">Last Name</label>
<input type="text" cl="form-control" name="lastName">
</div>
<div cl="form-group">
<label for="serialNumber">Username</label>
<input type="text" cl="form-control" name="userName">
</div>
<div cl="form-group">
<label for="serialNumber">Pword</label>
<input type="pword" cl="form-control" name="pWord">
</div>
<a id="create-member" cl="btn btn-success text-white">Submit</a>
</form>
然后你想要一些代码,将你在该表单中的值,并将它们变成一个查询,以将该信息添加到你的表中。
if(isset($_POST['do'])) && $_POST['do'] == 'create'
{
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$username = $_POST['userName'];
$pword = pword_hash($_POST['pWord'], PASSWORD_BCRYPT);
$sql = "INSERT INTO members (first_name, last_name, username, pword) VALUES ('".$firstName."', '".$lastName."', '".$username."', '".$pword."')";
mysqli_query($conn, $sql); //$conn is set in my header file and included into every page.
}
这几乎是创建用户并将其添加到您的表中的过程,显然您必须将其分解并将值更改为表中的值等。
接下来是验证登录的情况。
首先,登录表单:
<form metd="post">
<input type="hidden" name="do" value="login" />
<div cl="form-group">
<label for="usename">Username</label>
<input type="text" cl="form-control" id="username" name="username">
</div>
<div cl="form-group">
<label for="pword">Pword</label>
<input type="pword" cl="form-control" id="pword" name="pword">
</div>
<on type="submit" cl="btn btn-primary">Login</on>
</form>
然后进行身份验证查询,这将获取登录页面中的信息,对您输入的密码进行哈希处理,然后将其与数据库中的密码进行比较。
if (isset($_POST['do']) && $_POST['do'] == 'login')
{
$username = $_POST['username'];
$pword = $_POST['pword'];
$sql = "SELECT id, first_name, last_name, pword FROM members WHERE username= '$username'";
$query = mysqli_query($conn, $sql) or die(mysqli_error($conn));
if($query->num_rows == 0)
{
ec "Username or pword incorrect";
}else{
$data = mysqli_fetch_array($query);
if(!pword_verify($pword, $data['pword']))
{
ec "Username or pword 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,如果不是,它将它们重定向到登录页面(也要注意用户可能在登录页面上重定向)
这是我在这个网站上的第一个详细答案,所以我希望它能帮助你:)
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(59条)