• PHP写用户注册、登录和密码重置功能


    目录

    连接数据库:

     用户注册功能:

    用户登录功能:

     密码重置功能:


    首先,创建一个名为users的数据库表,包含以下字段:

    • id:用户ID,自增主键
    • username:用户名,唯一
    • password:加密后的密码
    • email:邮箱,唯一

    接下来,编写PHP代码实现用户注册、登录和密码重置功能:

    连接数据库

    1. $servername = "localhost";
    2. $username = "username";
    3. $password = "password";
    4. $dbname = "myDB";
    5. // 创建连接
    6. $conn = new mysqli($servername, $username, $password, $dbname);
    7. // 检测连接
    8. if ($conn->connect_error) {
    9. die("连接失败: " . $conn->connect_error);
    10. }
    11. ?>

     ​​​​​​​用户注册功能:

    1. if (isset($_POST['register'])) {
    2. $username = $_POST['username'];
    3. $password = password_hash($_POST['password'], PASSWORD_DEFAULT); // 对密码进行加密处理
    4. $email = $_POST['email'];
    5. $sql = "INSERT INTO users (username, password, email) VALUES ('$username', '$password', '$email')";
    6. if ($conn->query($sql) === TRUE) {
    7. echo "注册成功!";
    8. } else {
    9. echo "Error: " . $sql . "
      "
      . $conn->error;
    10. }
    11. }
    12. ?>

    用户登录功能:

    1. session_start(); // 开始会话
    2. if (isset($_POST['login'])) {
    3. $username = $_POST['username'];
    4. $password = $_POST['password'];
    5. $sql = "SELECT * FROM users WHERE username='$username'";
    6. $result = $conn->query($sql);
    7. if ($result->num_rows > 0) {
    8. $row = $result->fetch_assoc();
    9. if (password_verify($password, $row['password'])) { // 验证密码是否正确
    10. $_SESSION['username'] = $username; // 将用户名存入会话中
    11. header("Location: welcome.php"); // 跳转到欢迎页面
    12. } else {
    13. echo "密码错误!";
    14. }
    15. } else {
    16. echo "用户名不存在!";
    17. }
    18. }
    19. ?>

     密码重置功能:

    1. if (isset($_POST['reset'])) {
    2. $email = $_POST['email'];
    3. $newPassword = password_hash($_POST['newPassword'], PASSWORD_DEFAULT); // 对新密码进行加密处理
    4. $sql = "UPDATE users SET password='$newPassword' WHERE email='$email'";
    5. if ($conn->query($sql) === TRUE) {
    6. echo "密码重置成功!";
    7. } else {
    8. echo "Error: " . $sql . "
      "
      . $conn->error;
    9. }
    10. } elseif (isset($_POST['confirm'])) { // 如果用户点击了确认按钮,发送重置邮件并跳转到登录页面(此处省略发送邮件的代码)
    11. header("Location: login.php"); // 跳转到登录页面
    12. } elseif (isset($_GET['token']) && isset($_GET['email'])) { // 如果用户点击了重置链接,检查令牌是否匹配并允许用户重置密码(此处省略检查令牌的代码)?>
    13. "" method="post">
    14. "password" name="newPassword" required>

      "submit" name="reset" value="重置密码"> "submit" name="confirm" value="确认"> "login.php">返回登录

      "index.php">返回首页 } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?> } ?>

  • 相关阅读:
    CSS-元素的显示与隐藏
    J9数字论:Web3.0对比传统Web2.0的区别
    Python之第十二章 异常处理
    云原生下一步的发展方向
    Spring的国际化消息
    QT Creator 添加快捷生成函数、文件注释脚本
    CAS详解
    【Mybatis】使用IDEA创建第一个Mybatis入门程序
    【项目 计网12】4.32UDP通信实现 4.33广播 4.34组播 4.35本地套接字通信
    0基础学习VR全景平台篇 第101篇:企业版功能-子账号分配管理
  • 原文地址:https://blog.csdn.net/wangxuanyang_zer/article/details/133968147