自学嵌入式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响应(含状态码/内容类型)

结果图

相关推荐
余槐i8 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹8 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo8 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
骇客野人9 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
花间相见12 小时前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端
花间相见12 小时前
【计算基础|MySQL02】【上手】SQL 增删改查
数据库·后端
ITxiaobing202312 小时前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip
这个DBA有点耶12 小时前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构
对空六课12 小时前
RFM分层边界变化的回溯计算
大数据·服务器·前端·数据库·人工智能·算法·数据分析