当前位置: 首页 > news >正文

基于websocket的多用户网页五子棋(四)

一.前期回顾

对于前面内容不太了解的,可以去看一看下面的:https://blog.csdn.net/weixin_60668256/article/details/152447607?fromshare=blogdetail&sharetype=blogdetail&sharerId=152447607&sharerefer=PC&sharesource=weixin_60668256&sharefrom=from_link

二.数据管理模块设计

1.数据库设计

这里的密码在设置之后会变成一串乱序的字符,所以要开128个varchar,而且为了设置用户名不重复,我们这里将username设置成为unique key

drop database if exists gobang;create database if not exists gobang;use gobang;create table if not exists user(id int primary key auto_increment,username varchar(32) unique key not null,password varchar(128) not null,score int,table_count int,win_count int
);

2.数据管理模块的封装与实现

代码实现:

#ifndef __M_DB_H__
#define __M_DB_H__#include <assert.h>
#include <mutex>
#include "util.hpp"class user_table{
private:MYSQL *_mysql; //mysql操作句柄std::mutex _mutex;//互斥锁保护数据库的访问操作
public:user_table(const std::string &host,const std::string& username,const std::string& password,const std::string& dbname,uint16_t port = 3306){_mysql = mysql_util::mysql_create(host,username,password,dbname,port);assert(_mysql != NULL);}~user_table(){mysql_util::mysql_destory(_mysql);_mysql = NULL;}//注册时新增用户bool insert(Json::Value &user){#define INSERT_USER "insert user values(null,'%s',SHA2('%s',256),1000,0,0);"//进行执行增加功能if(user["password"].isNull() || user["username"].isNull()){DLOG("INPUT PASSWORD OR USERNAME");return false;}char sql[4096] = {0};sprintf(sql,INSERT_USER,user["username"].asCString(),user["password"].asCString());bool ret = mysql_util::mysql_exec(_mysql,sql);if(ret == false){DLOG("insert user info failed!!\n");return false;}return true;}//登录验证,并返回详细的用户信息bool login(Json::Value &user){//以用户名和密码共同作为查询过滤的条件,查询到数据则表示用户名和密码一致,没有信息表示用户名密码错误#define LOGIN_USER "select id,score,total_count,win_count from user where username='%s' and password=SHA2(
http://www.dtcms.com/a/438356.html

相关文章:

  • 深入浅出 C++20 协程
  • 想做个小网站怎么做主机壳 安装wordpress
  • 永兴县网站建设专业山东省城乡建设厅官网
  • ip prefix-list(IP前缀列表)概念及题目
  • [工作流节点9] 删除记录节点的风险与使用规范 —— 明道云工作流数据清理实战指南
  • 做网站推广的销售怎么打电话如何做网站发产品销售
  • MongoDB GEO 项目场景 ms-scope 实战
  • 医美三方网站怎么做网站外链建设可以提升网站
  • 在算法比赛中高效处理多行输入
  • MySQL 管理与配置详解:从安装到架构解析
  • 构建工具webpack
  • 深入理解 Rust 的内存模型:变量、值与指针
  • 单位网站备案要等多久湖南住建云网站
  • 浦口区网站建设售后服务有没有做卡商的网站
  • 可达鸭模拟赛1
  • LINUX复习资料(一)
  • 专业做酒的网站有哪些互联网营销培训班 考证
  • 串扰09-Er与串扰
  • HarmonyOS应用开发深度解析:ArkTS语法与组件化开发实践
  • 免费的简历制作网站100大看免费行情的软件
  • seo站内优化站外优化vs做网站如何输出
  • 【学习K230-例程43】GT6700-AI视觉-人体关键点检测
  • 网站域名所有权wordpress文章截断
  • HTMLz设计一个电压电流波形显示界面
  • 大模型原理与实践:第三章-预训练语言模型详解_第1部分-Encoder-only(BERT、RoBERTa、ALBERT)
  • MySQL 慢查询日志slow query log
  • 刷赞抖音推广网站长沙网站seo分析
  • 怎么做网站界面设计如何推广店铺呢
  • C++笔记(面向对象)六(4+2C++11)个缺省函数详解
  • CTFHub 信息泄露通关笔记7:Git泄露 Log