CGI(Common Gateway Interface)是一種Web服務(wù)器與其他應(yīng)用程序之間進(jìn)行交互的標(biāo)準(zhǔn),它可以通過將用戶請(qǐng)求傳遞給運(yùn)行在服務(wù)器上的其他程序來生成動(dòng)態(tài)內(nèi)容。而MySQL是一種流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它可以通過編寫SQL語(yǔ)句進(jìn)行數(shù)據(jù)操作。
在Web應(yīng)用程序中,CGI程序通常需要訪問數(shù)據(jù)庫(kù)來獲取或修改數(shù)據(jù)。這時(shí)就需要使用CGI與MySQL進(jìn)行交互了。下面是一個(gè)使用CGI和MySQL實(shí)現(xiàn)用戶登錄功能的示例:
#include#include #include #include void error(const char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } int main(void) { char *query; MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; int row_cnt, i; char username[20], password[20]; cgiFormString("username", username, sizeof(username)); cgiFormString("password", password, sizeof(password)); conn = mysql_init(NULL); if (!conn) error("mysql_init failed"); if (!mysql_real_connect(conn, "localhost", "root", "password", "database", 0, NULL, 0)) error("mysql_real_connect failed"); query = malloc(strlen(username) + strlen(password) + 50); sprintf(query, "SELECT * FROM users WHERE username='%s' AND password='%s'", username, password); if (mysql_query(conn, query)) error("mysql_query failed"); res = mysql_store_result(conn); if (!res) error("mysql_store_result failed"); row_cnt = mysql_num_rows(res); if (row_cnt == 0) { printf("Content-Type:text/html\n\n"); printf(""); printf(" 登錄失敗!
"); printf(""); } else { printf("Content-Type:text/html\n\n"); printf(""); printf("登錄成功!
"); printf(""); } mysql_free_result(res); mysql_close(conn); free(query); return 0; }
在上面的示例中,我們先通過CGI獲取用戶提交的用戶名和密碼。然后使用MySQL查詢用戶輸入的信息是否匹配數(shù)據(jù)庫(kù)中的數(shù)據(jù)。最后根據(jù)查詢結(jié)果返回相應(yīng)的登錄成功或者登錄失敗的頁(yè)面。
下一篇ceph mysql