实现网页注册和登录功能的PHP代码涉及多个方面,包括数据库连接、用户输入验证、密码加密、会话管理等。下面是一个简单的示例,展示了如何创建一个基本的注册和登录系统。
注册页面 (register.php)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>User Registration</title>
</head>
<body>
<h2>User Registration</h2>
<form action="register_process.php" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Register">
</form>
</body>
</html>
注册处理逻辑 (register_process.php)
<?php
// 连接数据库
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 处理用户提交的注册信息
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
// 对密码进行加密
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 准备插入语句
$sql = "INSERT INTO users (username, password) VALUES ('$username', '$hashed_password')";
if ($conn->query($sql) === TRUE) {
echo "Registration successful!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>
登录页面 (login.php)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>User Login</title>
</head>
<body>
<h2>User Login</h2>
<form action="login_process.php" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
登录处理逻辑 (login_process.php)
<?php
session_start();
// 连接数据库
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 处理用户提交的登录信息
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
// 查询用户是否存在
$sql = "SELECT * FROM users WHERE username='$username'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
// 验证密码
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) {
// 登录成功,设置会话变量
$_SESSION['username'] = $username;
echo "Login successful!";
// 可以重定向到其他页面
} else {
echo "Incorrect password!";
}
} else {
echo "User not found!";
}
}
$conn->close();
?>
数据库结构
在使用以上代码之前,需要在MySQL数据库中创建一个表 users
,结构如下:
CREATE TABLE users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
注意事项
-
安全性: 在实际应用中,需要注意密码安全和SQL注入等安全问题。上面的示例中使用了
password_hash()
和password_verify()
来处理密码,建议使用 PHP 的预定义密码哈希函数确保密码安全性。 -
会话管理: 使用
session_start()
开启会话管理,并使用$_SESSION
变量来存储登录状态。 -
错误处理: 在实际开发中,应添加更多的错误处理和验证逻辑,以保证系统的稳定性和安全性。
以上代码提供了一个基本的注册和登录示例,可作为起点进行进一步的开发和调整,以满足具体项目的需求和安全要求。