这是一个使用PHP、MySQL和HTML创建登录系统的教程。您的网站需要是动态的,您的访问者需要立即访问它。因此,他们希望尽可能多次登录。登录验证系统对于任何网络应用程序都非常常见。它允许注册用户访问网站和仅限会员的功能。当我们想要存储用户信息时,它也很有帮助。它涵盖了从购物网站、教育网站到会员网站等所有内容。
*附属链接。请查看使用条款。
本教程分为5个部分。
目录
- 要求
- 注册系统
- 登录系统
- 欢迎页面
- 注销脚本
1) 构建PHP登录系统的要求
为了成功跟随本教程并构建一个PHP登录系统,您必须具备并熟悉以下内容:
- 支持PHP运行您的代码的服务器
- 对HTML和CSS的了解和熟悉
- 在您的设备上安装了MySQL数据库,并知道如何使用它
- 能够为您的登录系统添加所有正确的安全措施
如果您具备这些基本要求和知识,那么您可以继续下一步,了解如何构建您的PHP登录系统。
2) 构建注册系统
在这部分中,我们将创建一个允许用户在系统中创建新账户的注册系统。我们的第一步是创建一个HTML注册表单。这个表单非常简单。它只会要求填写姓名、邮箱、密码和确认密码。每个用户的邮箱地址都将是唯一的,不允许同一个邮箱地址拥有多个账户。对于试图使用同一邮箱地址创建多个账户的用户,系统将显示错误消息。
第一步:在HTML中创建注册表单
我们将创建一个名为PHP的文件,文件名为register.php,其中包含以下代码。这是一个带有一些基本验证的简单HTML表单。如果您对HTML不熟悉,可以从许多在线网站上获取现成的html5登录表单模板。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Register</h2>
<p>Please fill this form to create an account.</p>
<form action="" method="post">
<div class="form-group">
<label>Full Name</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
上述HTML表单的输出如下所示。
所有输入字段都需要通过添加默认的HTML属性"required"
来进行验证。使用type="email"
将验证用户提供的电子邮件地址,如果电子邮件地址无效,将显示错误。对于注册表单,我们使用了bootstrap进行快速开发。如果您想节省HTML代码编写时间,可以随时使用一些免费的html5模板来进行项目开发。
第2步:创建MySQL数据库表
您需要创建一个新数据库,可以使用任何合适的名称。然后,请执行以下SQL查询来在您新创建的MySQL数据库中创建用户表。
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
第3步:创建数据库配置文件
现在,我们已经创建了用户表。让我们创建一个名为config.php的新PHP文件,以连接到MySQL数据库。将以下代码粘贴到config.php文件中,并将数据库名称更改为您在创建数据库时选择的名称。
步骤4:创建会话文件
让我们创建一个名为session.php的文件。在这个文件中,我们将开始会话,并检查用户是否已经登录,如果是,则将用户重定向到welcome.php文件。
步骤5:在PHP中创建注册表单
最后,现在是创建一个PHP代码,允许用户将他们的帐户注册到系统中的时候了。这个PHP代码将在任何用户已经使用相同的电子邮件地址注册时向用户发出错误警报。
将以下代码替换到register.php文件中。
prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
// 绑定参数(s = 字符串,i = 整数,b = 二进制大对象,等等),在我们的情况下,用户名是一个字符串,因此我们使用"s"
$query->bind_param('s', $email);
$query->execute();
// 存储结果,以便我们可以检查数据库中是否存在该帐户。
$query->store_result();
if ($query->num_rows > 0) {
$error .= 'The email address is already registered!
';
} else {
// 验证密码
if (strlen($password ) < 6) {
$error .= 'Password must have atleast 6 characters.
';
}
// 验证确认密码
if (empty($confirm_password)) {
$error .= 'Please enter confirm password.
';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= 'Password did not match.
';
}
}
if (empty($error) ) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= 'Your registration was successful!
';
} else {
$error .= 'Something went wrong!
';
}
}
}
}
$query->close();
$insertQuery->close();
// 关闭数据库连接
mysqli_close($db);
}
?>
Sign Up
Register
Please fill this form to create an account.
一旦用户点击提交按钮,它将检查$_SERVER["REQUEST_METHOD"] == "POST"
和$_POST['submit']
变量是否已设置。出于安全考虑,我们始终建议不要将密码以明文形式存储在数据库中。我们使用了password_hash()
函数,该函数使用强大的单向哈希算法创建新的密码哈希。
以上PHP脚本将验证没有用户注册相同的电子邮件地址,并验证密码。确认验证后,我们将用户提供的信息存储在用户表中,并通知用户注册成功。
3)构建登录系统
在这部分中,我们将创建一个登录表单,允许用户访问系统的受限区域。在我们的情况下,受限区域是一个欢迎页面,我们将在下一部分中介绍。
步骤1:在HTML中创建登录表单
以下是HTML中的登录表单。将其粘贴到名为login.php的文件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Login</h2>
<p>Please fill in your email and password.</p>
<form action="" method="post">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Don't have an account? <a href="register.php">Register here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
上述代码的输出将如下所示
步骤2:在PHP中创建登录系统
在HTML中创建登录表单之后,我们将编写一个代码来验证登录凭据。在表单提交时,我们将检查电子邮件和密码是否已填写。如果它们已填写,则我们将执行一个SELECT
查询,以便根据电子邮件和密码在数据库中查找记录。如果找到任何记录,则我们将在会话中存储"userID"
,并将用户重定向到welcome.php文件,否则,用户将收到错误消息提醒。
让我们在login.php文件中替换以下代码。
Please enter email.';
}
// 验证密码是否为空
if (empty($password)) {
$error .= 'Please enter your password.
';
}
if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
// 将用户重定向到欢迎页面
header("location: welcome.php");
exit;
} else {
$error .= 'The password is not valid.
';
}
} else {
$error .= 'No User exist with that email address.
';
}
}
$query->close();
}
// 关闭连接
mysqli_close($db);
}
?>
Login
Login
Please fill in your email and password.
4) 创建欢迎页面
以下是welcome.php文件的代码。用户在成功登录后将被重定向到此页面。我们在页面顶部添加了一些代码来检查用户是否未登录,然后将用户重定向到登录页面。
让我们创建一个welcome.php文件,并将以下代码粘贴到其中。
Welcome
Hello, . Welcome to demo site.
5) 注销脚本
最后,让我们创建一个logout.php文件,并将以下代码粘贴到其中。
一旦用户点击注销链接,上述脚本将被调用以销毁会话并将用户重定向到login.php文件。
结论
在本教程中,我解释了如何使用HTML、PHP和MySQL创建登录系统。一旦您了解了创建登录系统有多简单,您就可以添加其他功能,如重置密码、忘记密码、验证电子邮件地址、编辑用户个人资料等。
Source:
https://dzone.com/articles/create-a-login-system-using-php