目录
首先,创建一个名为users的数据库表,包含以下字段:
接下来,编写PHP代码实现用户注册、登录和密码重置功能:
- $servername = "localhost";
- $username = "username";
- $password = "password";
- $dbname = "myDB";
-
- // 创建连接
- $conn = new mysqli($servername, $username, $password, $dbname);
-
- // 检测连接
- if ($conn->connect_error) {
- die("连接失败: " . $conn->connect_error);
- }
- ?>
- 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 . "
" . $conn->error; - }
- }
- ?>
- 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 "用户名不存在!";
- }
- }
- ?>
- 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 . "
" . $conn->error; - }
- } elseif (isset($_POST['confirm'])) { // 如果用户点击了确认按钮,发送重置邮件并跳转到登录页面(此处省略发送邮件的代码)
- header("Location: login.php"); // 跳转到登录页面
- } elseif (isset($_GET['token']) && isset($_GET['email'])) { // 如果用户点击了重置链接,检查令牌是否匹配并允许用户重置密码(此处省略检查令牌的代码)?>
-
-
- "password" name="newPassword" required>
"submit" name="reset" value="重置密码"> "submit" name="confirm" value="确认"> "login.php">返回登录
"index.php">返回首页 } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?>