好的,以下是一个简单的 PHP 注册和登录代码的实现,代码注释中有详细的解释。

  1. 注册

在注册过程中,需要验证用户输入的用户名和密码是否符合要求,并将用户信息插入到数据库中。

phpCopy code<?php
// 连接数据库
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');

// 检查连接是否成功
if (!$conn) {
  die('连接失败: ' . mysqli_connect_error());
}

// 获取用户提交的注册表单数据
$username = $_POST['username'];
$password = $_POST['password'];

// 验证用户名和密码是否符合要求
if (strlen($username) < 4) {
  echo '用户名长度不能少于4个字符';
  exit();
}
if (strlen($password) < 6) {
  echo '密码长度不能少于6个字符';
  exit();
}

// 对密码进行哈希加密
$password_hashed = password_hash($password, PASSWORD_DEFAULT);

// 插入用户信息到数据库中
$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password_hashed')";
if (mysqli_query($conn, $sql)) {
  echo '注册成功';
} else {
  echo '注册失败: ' . mysqli_error($conn);
}

// 关闭数据库连接
mysqli_close($conn);
?>
  1. 登录

在登录过程中,需要验证用户输入的用户名和密码是否正确,并将登录状态保存在 session 中。

phpCopy code<?php
// 连接数据库
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');

// 检查连接是否成功
if (!$conn) {
  die('连接失败: ' . mysqli_connect_error());
}

// 获取用户提交的登录表单数据
$username = $_POST['username'];
$password = $_POST['password'];

// 查询数据库中是否存在该用户
$sql = "SELECT * FROM users WHERE username='$username'";
$result = mysqli_query($conn, $sql);

// 如果查询到了该用户,则验证密码是否正确
if (mysqli_num_rows($result) == 1) {
  $row = mysqli_fetch_assoc($result);
  if (password_verify($password, $row['password'])) {
    // 登录成功,将用户信息保存在 session 中
    session_start();
    $_SESSION['user_id'] = $row['id'];
    $_SESSION['username'] = $row['username'];
    echo '登录成功';
  } else {
    echo '密码不正确';
  }
} else {
  echo '用户不存在';
}

// 关闭数据库连接
mysqli_close($conn);
?>

注意:为了使 session 生效,需要在每个 PHP 页面的开头添加 session_start() 函数。例如:

phpCopy code<?php
session_start();

// 以下是页面代码
?>

这样,在登录成功后,可以通过 $_SESSION 超全局数组获取用户的信息。

phpCopy code<?php
session_start();

// 获取用户信息
$user_id = $_SESSION['user_id'];
$username = $_SESSION['username'];

// 以下是页面代码
?>