首先,创建一个名为users
的数据库表,包含以下字段:
- id:用户ID,自增主键
- username:用户名,唯一
- password:加密后的密码
- email:邮箱,唯一
接下来,编写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 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 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 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 } ?>