好的,以下是一个简单的 PHP 注册和登录代码的实现,代码注释中有详细的解释。
- 注册
在注册过程中,需要验证用户输入的用户名和密码是否符合要求,并将用户信息插入到数据库中。
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);
?>
- 登录
在登录过程中,需要验证用户输入的用户名和密码是否正确,并将登录状态保存在 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'];
// 以下是页面代码
?>
