/** * 为当前访问者启用 session * * @param const char* datadir 用于保存 session 数据文件的目录 * * @return int 成功返回0,失败返回非0值 */ int session_start(const char* datadir) { char cookie_session_id[34]; int result; if (g_session_data != NULL) { fprintf(cgiOut, "Warning: session_start() calls again.<br />\n"); return -1; } // 初始化 session_data sess_init(datadir); // 根据 cookie 状态确定是创建新 session 还是载入现有的 session result = cgiCookieString("CWEB_SESSION_ID", cookie_session_id, 33); #ifdef DEBUG fprintf(cgiOut, "cgiCookieString() result: %u\n", result); fprintf(cgiOut, "cookie_session_id: %s\n", cookie_session_id); #endif if (result != cgiFormSuccess) { // 没有找到有效的 cookie session_id,创建一个新 session result = sess_create(); } else { result = sess_load(cookie_session_id, datadir); } sess_gc(); //处理过期session return result; }
int check_password() { char username[30]; char password[30]; memset(username,0,sizeof(username)); memset(password,0,sizeof(password)); if(cgiFormNotFound == cgiFormStringNoNewlines("j_password", password, 30)) { //fprintf(cgiOut, "<p> cgiFormNotFound</p>\n"); cgiCookieString("admin", password, sizeof(password)); memcpy(username,"admin",5); //fprintf(cgiOut, "<p> ==11%s==%s----%s</p>\n",cgiRemoteAddr,username,password); } else { cgiFormStringNoNewlines("j_username", username, 30); cgiFormStringNoNewlines("j_password", password, 30); } //fprintf(cgiOut, "<p> %s----%s</p>\n",username,password); if(!memcmp(username,"admin",5) && !memcmp(password,"asdf1~",6)) { return 1; } else { fprintf(cgiOut, "<p> 用户未登录或密码错误,请返回重新输入!</p>\n"); fprintf(cgiOut, " <input type=\"button\" name=\"rest\" onclick=\"javascript:window.location.href='/index.html'\" value=\"返回\" />\n"); fprintf(cgiOut, "</center>\n</body>\n"); fprintf(cgiOut, "</html>\n"); return 0; } }
void Cookies() { char **array, **arrayStep; char cname[1024], cvalue[1024]; fprintf(cgiOut, "Cookies Submitted On This Call, With Values (Many Browsers NEVER Submit Cookies):<p>\n"); if (cgiCookies(&array) != cgiFormSuccess) { return; } arrayStep = array; fprintf(cgiOut, "<table border=1>\n"); fprintf(cgiOut, "<tr><th>Cookie<th>Value</tr>\n"); while (*arrayStep) { char value[1024]; fprintf(cgiOut, "<tr>"); fprintf(cgiOut, "<td>"); cgiHtmlEscape(*arrayStep); fprintf(cgiOut, "<td>"); cgiCookieString(*arrayStep, value, sizeof(value)); cgiHtmlEscape(value); fprintf(cgiOut, "\n"); arrayStep++; } fprintf(cgiOut, "</table>\n"); cgiFormString("cname", cname, sizeof(cname)); cgiFormString("cvalue", cvalue, sizeof(cvalue)); if (strlen(cname)) { fprintf(cgiOut, "New Cookie Set On This Call:<p>\n"); fprintf(cgiOut, "Name: "); cgiHtmlEscape(cname); fprintf(cgiOut, "Value: "); cgiHtmlEscape(cvalue); fprintf(cgiOut, "<p>\n"); fprintf(cgiOut, "If your browser accepts cookies (many do not), this new cookie should appear in the above list the next time the form is submitted.<p>\n"); } cgiStringArrayFree(array); }