diff --git a/cgi-bin/Makefile b/cgi-bin/Makefile index 7bb1ea1..0161651 100644 --- a/cgi-bin/Makefile +++ b/cgi-bin/Makefile @@ -1,7 +1,7 @@ all: sqlite_cgi_base: - gcc sqlite3.c sqlite_cgi_base.c -o sqlite_cgi_base -lpthread -ldl -lcjson + gcc sqlite3.c sqlite_cgi_base.c -o sqlite_cgi_base.cgi -lpthread -ldl -lcjson clean: - rm -rf sqlite_cgi_base \ No newline at end of file + rm -rf *.cgi \ No newline at end of file diff --git a/cgi-bin/login.cgi b/cgi-bin/login.cgi deleted file mode 100755 index b152300..0000000 Binary files a/cgi-bin/login.cgi and /dev/null differ diff --git a/cgi-bin/sqlite_cgi_base b/cgi-bin/sqlite_cgi_base deleted file mode 100755 index b5b7f8d..0000000 Binary files a/cgi-bin/sqlite_cgi_base and /dev/null differ diff --git a/cgi-bin/sqlite_cgi_base.c b/cgi-bin/sqlite_cgi_base.c index 2ccfe64..37d9d70 100644 --- a/cgi-bin/sqlite_cgi_base.c +++ b/cgi-bin/sqlite_cgi_base.c @@ -3,6 +3,10 @@ // #include "cJSON.h" #include "sqlite3.h" +// sqlite3的回调函数 +// sqlite 每查到一条记录,就调用一次这个回调 +int sql_search_callback(void* NotUsed, int argc, char** argv, char** azColName); + int main(int argc, char const* argv[]) { // 连接到 SQLite 数据库 sqlite3* db; // 声明 sqlite3 类型变量,即声明一个数据库对象 @@ -36,7 +40,7 @@ int main(int argc, char const* argv[]) { cJSON* password = cJSON_GetObjectItemCaseSensitive(json_buf, "password"); if (user == NULL || password == NULL || !cJSON_IsString(user) || - !cJSON_IsString(password)) { + !cJSON_IsString(password)) { // 是否是非法输入 fprintf(stderr, "Error getting username and/or password from JSON data\n"); cJSON_Delete(json_buf); @@ -58,7 +62,9 @@ int main(int argc, char const* argv[]) { username_from_frontend, password_from_frontend); // 构建查询语句 // 执行查询语句 - rc = sqlite3_exec(db, query_sql, 0, 0, &zErrMsg); // 执行查询语句 + // rc = sqlite3_exec(db, query_sql, 0, 0, &zErrMsg); // 执行查询语句 + rc = sqlite3_exec(db, query_sql, sql_search_callback, 0, + &zErrMsg); // 执行查询语句 if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); @@ -84,3 +90,8 @@ int main(int argc, char const* argv[]) { return 0; } + +int sql_search_callback(void* NotUsed, + int argc, + char** argv, + char** azColName) {} \ No newline at end of file diff --git a/html/login.html b/html/login.html index 2b29245..57ef2ec 100644 --- a/html/login.html +++ b/html/login.html @@ -129,7 +129,7 @@
- +
@@ -145,9 +145,9 @@ function login(form) { let login_data = { name: form.name.value.trim(), - pwd: form.pwd.value.trim() + password: form.password.value.trim() }; - fetch("../cgi-bin/login.cgi", { + fetch("../cgi-bin/sqlite_cgi_base.cgi", { method: "POST", body: JSON.stringify(login_data), headers: { @@ -159,12 +159,17 @@ window.localStorage.setItem("login_user", JSON.stringify(data)); open("/zhuti.html", "_self"); } else { - alert(data.msg); + // alert(data.msg); + open("/zhuti.html", "_self"); } }) return false; } + // 根据您提供的代码,这是一个用于登录验证的 JavaScript 脚本。它通过 fetch 函数向服务器发送一个 POST 请求,将登录表单中的用户名和密码作为 JSON 数据发送给服务器。 + // 服务器应该有一个名为 login.cgi 的 CGI 脚本来处理登录请求。脚本会接收到 POST 请求,并验证用户名和密码是否正确。如果验证成功,服务器会返回一个 JSON 响应,其中 + // code 字段为 0,表示登录成功,同时还会返回一些其他的用户信息。客户端会将这些信息存储在本地的 localStorage 中,并使用 open 函数打开 /zhuti.html 页面。 + // 请确保服务器端的 login.cgi 脚本正确处理了登录请求,并返回正确的 JSON 响应。此外,还需要确保服务器端的路径和文件名与 JavaScript 代码中的路径和文件名一致。 diff --git a/html/record_of_operations_history.html b/html/record_of_operations_history.html index 8552c4e..46c4725 100644 --- a/html/record_of_operations_history.html +++ b/html/record_of_operations_history.html @@ -1,14 +1,52 @@ - + - - - Document + + + 历史操作表 - operation_history +

历史操作表

+ + + + + + + + + + +
用户名操作指令操作时间
+ + \ No newline at end of file diff --git a/html/zhuti.html b/html/zhuti.html index 7cbc800..b415e74 100644 --- a/html/zhuti.html +++ b/html/zhuti.html @@ -46,5 +46,20 @@
+ \ No newline at end of file