On the evening of September 19, .c files which can communicate successfully with .html & mysql create files

This commit is contained in:
wang_chengh 2023-09-19 18:44:20 +08:00
parent 4b08ea89e1
commit c6d43162ff
2 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,101 @@
#include <cjson/cJSON.h>
#include <fcntl.h>
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
// 连接到 MySQL 数据库
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed\n");
exit(1);
}
if (mysql_real_connect(conn, "localhost", "root", "root", "router", 3306,
NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed\n");
mysql_close(conn);
exit(1);
}
// 获取前端传递的 JSON 数据
char request_data[128] = "";
fgets(request_data, 128, stdin);
// 解析 JSON 数据
cJSON *p = cJSON_Parse(request_data);
if (p == NULL) {
fprintf(stderr, "Error parsing JSON data\n");
mysql_close(conn);
return 1;
}
// 获取用户名和密码
cJSON *user = cJSON_GetObjectItemCaseSensitive(p, "name");
cJSON *pwd = cJSON_GetObjectItemCaseSensitive(p, "pwd");
if (user == NULL || pwd == NULL || !cJSON_IsString(user) ||
!cJSON_IsString(pwd)) {
fprintf(stderr,
"Error getting username and/or password from JSON data\n");
cJSON_Delete(p);
mysql_close(conn);
return 1;
}
char *username_from_frontend = user->valuestring;
char *password_from_frontend = pwd->valuestring;
// 构建查询语句
char query[1000];
sprintf(query, "SELECT * FROM users WHERE username='%s' AND password='%s'",
username_from_frontend, password_from_frontend);
if (mysql_query(conn, query)) {
fprintf(stderr, "SELECT query failed. Error: %s\n", mysql_error(conn));
cJSON_Delete(p);
mysql_close(conn);
return 1;
}
res = mysql_store_result(conn);
if (res == NULL) {
fprintf(stderr, "mysql_store_result() failed\n");
cJSON_Delete(p);
mysql_close(conn);
return 1;
}
cJSON *result_json = cJSON_CreateObject();
if ((row = mysql_fetch_row(res))) {
cJSON_AddNumberToObject(result_json, "code", 0);
} else {
cJSON_AddNumberToObject(result_json, "code", 1);
cJSON_AddStringToObject(result_json, "msg", "用户名或口令错误");
}
char *result_json_string = cJSON_Print(result_json);
// 输出 JSON 结果
printf("content-type: application/json;charset=utf-8\r\n");
printf("\r\n");
printf("%s\n", result_json_string);
free(result_json_string);
cJSON_Delete(result_json);
cJSON_Delete(p);
mysql_free_result(res);
mysql_close(conn);
return 0;
}

View File

@ -0,0 +1,19 @@
-- 创建管理员登录表
CREATE database if NOT EXISTS router;
USE router;
-- 创建用户登录密码表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL
);
INSERT INTO users (username, password)
VALUES ('admin', 'admin');
-- 创建ARP映射表
CREATE TABLE ip_mac(
id INT AUTO_INCREMENT PRIMARY KEY,
ip VARCHAR(50) NOT NULL,
mac VARCHAR(50) NOT NULL
);
-- 创建防火墙表
CREATE TABLE ip_fw(ip VARCHAR(50) NOT NULL);