/** * 该文件用于匹配login.html * 使用该.c文件可实现从名为router的数据库中 * 查询存有登录名及密码的users表 */ #include #include #include #include #include #include #include #include #include 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", "flykhan", "1202", "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); cJSON_AddStringToObject(result_json, "nickname", "admin"); } 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; }