ChatGPT批量写原创文章软件

网站建设:PHP用户登录与注册功能的代码实现

一、数据库设计(基础架构) 1. 用户表结构示例 sql CREATE TABLE users ( id INT(11) AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, created_at DATETIME

一、数据库设计(基础架构)

1. 用户表结构示例

sql

CREATE TABLE users (

id INT(11) AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL UNIQUE,

email VARCHAR(100) NOT NULL UNIQUE,

password VARCHAR(255) NOT NULL,

created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

建议使用MySQLi或PDO扩展连接数据库

二、注册功能实现

1. 注册页面(register.php)

php

require_once 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {

$username = trim($_POST['username']);

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);

// 检查用户名重复

$stmt = $conn->prepare("SELECT id FROM users WHERE username = ?");

$stmt->bind_param("s", $username);

$stmt->execute;

if ($stmt->get_result->num_rows > 0) {

die("用户名已存在");

// 插入数据库

$insert_stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");

$insert_stmt->bind_param("sss", $username, $password, $email);

if ($insert_stmt->execute) {

header("Location: login.php");

exit;

?>

关键点:使用password_hash加密密码,预处理语句防止SQL注入

2. HTML表单

html

三、登录功能实现

1. 登录处理(login.php)

php

session_start;

require_once 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {

$username = $_POST['username'];

$password = $_POST['password'];

$stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");

$stmt->bind_param("s", $username);

$stmt->execute;

$result = $stmt->get_result;

if ($result->num_rows == 1) {

$user = $result->fetch_assoc;

if (password_verify($password, $user['password'])) {

$_SESSION['user_id'] = $user['id'];

header("Location: dashboard.php");

exit;

echo "用户名或密码错误";

?>

关键点:session管理,password_verify验证密码

四、安全增强措施

1. 输入验证

php

function validateInput($data) {

$data = trim($data);

$data = stripslashes($data);

$data = htmlspecialchars($data);

return $data;

建议对所有用户输入执行过滤

2. 其他安全策略

  • 启用HTTPS协议
  • 设置CSRF令牌
  • 添加登录失败次数限制
  • 使用验证码(如Google reCAPTCHA)
  • 五、扩展功能建议

    1. 密码重置功能

    php

    // 生成重置令牌

    $token = bin2hex(random_bytes(32));

    $expires = date("Y-m-d H:i:s", time + 3600); // 1小时有效期

    通过邮件发送包含令牌的链接

    2. 记住我功能

    使用加密的HTTP Cookie存储持久登录信息,需配合token验证机制

    典型错误规避

    1. 避免事项

  • 明文存储密码(必须使用password_hash)
  • 未过滤的用户输入直接拼接SQL语句
  • 未设置session安全参数(如session.cookie_httponly)
  • 开发资源推荐

    1. 快速实现方案

  • 使用GitHub开源项目如`PHP-Login-System`
  • 参考CSDN提供的完整代码示例
  • 结合Bootstrap优化前端界面
  • 该方案综合了密码安全、输入验证、会话管理等关键要素,建议配合XAMPP等本地服务器环境进行开发测试。实际部署时需根据业务需求添加邮箱验证、用户权限分级等扩展功能。

    相关文章

    推荐文章