掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
strtok()、strstr()などで (ID:60645)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
関数にして何とか思い通り動くようになりました。 // アクセス履歴を解析 int aspParseAccess(char* sBuf1, char* sBuf2, AccessData* adata) { int i, iHeadCnt; char sMethod[100][1024] = {0}; char* e_head = sBuf2; /* 最初は文字列の先頭を代入しておく */ char* pNext; char* cDel = ","; const char* token = 0; char *pGet, *pReferer, *pUserAgent, *pHost; // 奇数行を","で分割 strcpy(adata->ports.sIp1, strtok(sBuf1, cDel)); strcpy(adata->ports.sPort1, strtok(NULL, cDel)); strcpy(adata->ports.sIp2, strtok(NULL, cDel)); strcpy(adata->ports.sPort2, strtok(NULL, cDel)); // 偶数行を".."で分割 i = 0; iHeadCnt = 0; while ((pNext=aspStrSplit(e_head,"..")) != NULL) { sprintf(sMethod[i],"%s",e_head); e_head = pNext; iHeadCnt++; i++; } sprintf(sMethod[i],"%s",e_head); // [Get] for(i=0; i<=iHeadCnt; i++) { pGet = strstr(sMethod[i], "GET "); if (pGet != NULL) { strcpy(adata->sGet, pGet+4); break;} if(i == iHeadCnt){ strcpy(adata->sGet, " "); } } // [Referer] for(i=0; i<=iHeadCnt; i++) { pReferer = strstr(sMethod[i], "Referer: "); if (pReferer != NULL) { strcpy(adata->sReferer, pReferer+9); break;} if(i == iHeadCnt){ strcpy(adata->sReferer, " "); } } // [User-Agent] for(i=0; i<=iHeadCnt; i++) { pUserAgent = strstr(sMethod[i], "User-Agent: "); if (pUserAgent != NULL) { strcpy(adata->sUserAgent ,pUserAgent+12); break;} if(i == iHeadCnt){ strcpy(adata->sUserAgent, " "); } } // [Host] for(i=0; i<=iHeadCnt; i++) { pHost = strstr(sMethod[i], "Host: "); if (pHost != NULL) { strcpy(adata->sHost ,pHost+6); break;} if(i == iHeadCnt){ strcpy(adata->sHost, " "); } } return 0; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.