目录
首先,创建一个名为users
的数据库表,包含以下字段:
- id:用户ID,自增主键
- username:用户名,唯一
- password:加密后的密码
- email:邮箱,唯一
接下来,编写PHP代码实现用户注册、登录和密码重置功能:
连接数据库:
php
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
?>
用户注册功能:
php
<?php
if (isset($_POST['register'])) {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT); // 对密码进行加密处理
$email = $_POST['email'];
$sql = "INSERT INTO users (username, password, email) VALUES ('$username', '$password', '$email')";
if ($conn->query($sql) === TRUE) {
echo "注册成功!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
?>
用户登录功能:
php
<?php
session_start(); // 开始会话
if (isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username='$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) { // 验证密码是否正确
$_SESSION['username'] = $username; // 将用户名存入会话中
header("Location: welcome.php"); // 跳转到欢迎页面
} else {
echo "密码错误!";
}
} else {
echo "用户名不存在!";
}
}
?>
密码重置功能:
php
<?php
if (isset($_POST['reset'])) {
$email = $_POST['email'];
$newPassword = password_hash($_POST['newPassword'], PASSWORD_DEFAULT); // 对新密码进行加密处理
$sql = "UPDATE users SET password='$newPassword' WHERE email='$email'";
if ($conn->query($sql) === TRUE) {
echo "密码重置成功!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
} elseif (isset($_POST['confirm'])) { // 如果用户点击了确认按钮,发送重置邮件并跳转到登录页面(此处省略发送邮件的代码)
header("Location: login.php"); // 跳转到登录页面
} elseif (isset($_GET['token']) && isset($_GET['email'])) { // 如果用户点击了重置链接,检查令牌是否匹配并允许用户重置密码(此处省略检查令牌的代码)?>
<body>
<form action="" method="post">
<label for="newPassword">新密码:</label> <input type="password" name="newPassword" required><br> <br> <input type="submit" name="reset" value="重置密码"> <input type="submit" name="confirm" value="确认"> <a href="login.php">返回登录</a> <br> <br> <a href="index.php">返回首页</a> </form> <!-- 显示表单 --><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?><?php } ?>