自学嵌入式day43,商城网页

HTTP服务器与数据库集成项目笔记

项目概述
  • 基于C语言的HTTP服务器程序
  • 集成SQLite3数据库管理功能
  • 实现用户注册/登录和商品搜索功能
  • 使用POSIX套接字API实现网络通信
技术栈
  1. 网络层

    • 使用socket()创建TCP套接字
    • bind()绑定8080端口
    • listen()监听连接请求
    • accept()处理客户端连接
    • 支持HTTP协议基础响应格式
  2. 数据库层

    • SQLite3轻量级数据库

    • 数据库文件:123.db

    • 核心数据表:

      sql 复制代码
      CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT UNIQUE NOT NULL,
        password TEXT NOT NULL
      );
      sql 复制代码
      CREATE TABLE goods (
        goods_id INTEGER PRIMARY KEY AUTOINCREMENT,
        goods_name TEXT NOT NULL,
        shop_price REAL,
        ...
      );
  3. 功能模块

    • 用户认证系统
      • 注册:db_register_user()
      • 登录:db_login_user()
    • 商品管理
      • 示例数据预置
      • 搜索功能:handle_search_results()
核心代码逻辑
c 复制代码
// 主服务循环
while (1) {
  int conn_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
  char buffer[BUFFER_SIZE];
  read(conn_fd, buffer, sizeof(buffer));
  
  // 请求路由解析
  if (strstr(buffer, "GET /login")) {
    handle_login_page(conn_fd);
  } 
  else if (strstr(buffer, "POST /register")) {
    // 解析表单数据
    handle_register_page(conn_fd);
  }
}
数据库操作示例
c 复制代码
// 用户注册实现
int db_register_user(const char *username, const char *password) {
  sqlite3_prepare_v2(db, "INSERT INTO users VALUES (?,?)", -1, &stmt, NULL);
  sqlite3_bind_text(stmt, 1, username, -1, SQLITE_STATIC);
  sqlite3_bind_text(stmt, 2, password, -1, SQLITE_STATIC);
  int rc = sqlite3_step(stmt);
}
项目亮点
  1. 完整的HTTP请求/响应处理流程
  2. 数据库表结构设计合理
  3. 预置商品数据便于功能演示
  4. 错误处理机制完善(SQLite错误码检查)
优化建议
  1. 增加密码加密存储(如bcrypt)
  2. 实现会话管理(Cookie/Session)
  3. 支持静态文件服务(HTML/CSS)
  4. 添加SQL注入防护
执行流程
  1. 初始化数据库表结构
  2. 启动HTTP监听服务
  3. 根据请求路径分发处理:
    • /login → 登录页面
    • /register → 注册处理
    • /search → 商品查询
  4. 返回HTTP响应(含状态码/内容类型)

HTTP服务器与数据库集成项目笔记

项目概述
  • 基于C语言的HTTP服务器程序
  • 集成SQLite3数据库管理功能
  • 实现用户注册/登录和商品搜索功能
  • 使用POSIX套接字API实现网络通信
技术栈
  1. 网络层

    • 使用socket()创建TCP套接字
    • bind()绑定8080端口
    • listen()监听连接请求
    • accept()处理客户端连接
    • 支持HTTP协议基础响应格式
  2. 数据库层

    • SQLite3轻量级数据库

    • 数据库文件:123.db

    • 核心数据表:

      sql 复制代码
      CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT UNIQUE NOT NULL,
        password TEXT NOT NULL
      );
      sql 复制代码
      CREATE TABLE goods (
        goods_id INTEGER PRIMARY KEY AUTOINCREMENT,
        goods_name TEXT NOT NULL,
        shop_price REAL,
        ...
      );
  3. 功能模块

    • 用户认证系统
      • 注册:db_register_user()
      • 登录:db_login_user()
    • 商品管理
      • 示例数据预置
      • 搜索功能:handle_search_results()
核心代码逻辑
c 复制代码
// 主服务循环
while (1) {
  int conn_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
  char buffer[BUFFER_SIZE];
  read(conn_fd, buffer, sizeof(buffer));
  
  // 请求路由解析
  if (strstr(buffer, "GET /login")) {
    handle_login_page(conn_fd);
  } 
  else if (strstr(buffer, "POST /register")) {
    // 解析表单数据
    handle_register_page(conn_fd);
  }
}
数据库操作示例
c 复制代码
// 用户注册实现
int db_register_user(const char *username, const char *password) {
  sqlite3_prepare_v2(db, "INSERT INTO users VALUES (?,?)", -1, &stmt, NULL);
  sqlite3_bind_text(stmt, 1, username, -1, SQLITE_STATIC);
  sqlite3_bind_text(stmt, 2, password, -1, SQLITE_STATIC);
  int rc = sqlite3_step(stmt);
}

项目亮点
  1. 完整的HTTP请求/响应处理流程
  2. 数据库表结构设计合理
  3. 预置商品数据便于功能演示
  4. 错误处理机制完善(SQLite错误码检查)
优化建议
  1. 增加密码加密存储(如bcrypt)
  2. 实现会话管理(Cookie/Session)
  3. 支持静态文件服务(HTML/CSS)
  4. 添加SQL注入防护
执行流程
  1. 初始化数据库表结构
  2. 启动HTTP监听服务
  3. 根据请求路径分发处理:
    • /login → 登录页面
    • /register → 注册处理
    • /search → 商品查询
  4. 返回HTTP响应(含状态码/内容类型)

结果图

相关推荐
万维易源9 小时前
免费药品信息查询:用API 读懂常用药
java·前端·数据库·药品信息·药品查询·药品查询api
郑州光合科技余经理10 小时前
餐饮预定系统架构拆解:订单链路、权限组织与私有化源码交付
java·开发语言·前端·数据库·人工智能·系统架构·php
xfhuangfu10 小时前
Oracle 19c 本地索引分区变为 UNUSABLE 后的空间占用验证
数据库·oracle
杨云龙UP10 小时前
Oracle ASH 报告详解:与 AWR 的区别、使用场景及生成方法
linux·运维·服务器·数据库·oracle
LCG元10 小时前
ESP32-IDF 远程固件升级实战:HTTPS OTA + 双分区切换 + 自动回滚
数据库·redis·https
️学习的小王10 小时前
MySQL常用函数知识点总结
数据库·mysql·oracle
看浪的路人11 小时前
第6讲:SQL 解析器
java·开发语言·数据库
吴老弟i11 小时前
Mac 本地安装 MySQL 学习指南
数据库
悦数图数据库11 小时前
千亿点边图谱建设,原生分布式图数据库如何避免单点瓶颈
数据库·分布式
XLYcmy11 小时前
pdf论文处理:CSV输出模式
数据库·python·pycharm·pdf·论文·csv·dify