/********************************************************************* webbbsx.cc 奥村晴彦 http://oku.edu.mie-u.ac.jp/~okumura/ *********************************************************************/ #include #include #include #include #include /* rename() */ #include /* unlink(), getpid() */ #include #include "util.h" using namespace std; char* ipaddr() { static char ip[18]; char* p = getenv("REMOTE_ADDR"); if (p == 0) return ""; strncpy(ip, p, 15); if ((p = strrchr(ip, '.')) != 0) { *(p + 1) = '*'; *(p + 2) = 0; } return ip; } /** メイン */ int main() { map post; parse_post(post); // POST されたキー・値のペアを取得 if (check_euc(post["message"]) < 10) error_html("本文の全角文字が少なすぎます(スパム?)"); if (post["message"].empty()) error_html("本文がありません"); (void) check_euc(post["subject"]); if (post["subject"].empty()) error_html("題名がありません"); (void) check_euc(post["name"]); if (post["name"].empty()) error_html("名前がありません"); string message = to_html_a(post["message"]); string subject = to_html(post["subject"]); string name = to_html_a(post["name"]); string now = timestr(); cout << "Content-type: text/html\n\n" "\n" "\n" "\n" "Thank you\n" #ifdef STYLESHEET "\n" #endif "\n" "\n" "

確認

\n" "

変更はブラウザの「戻る」を押して行ってください(下の枠でもできます)。\n" "

\n" "

\n" " (?→\\)\n" "

お名前
\n" "題名 
\n" "メッセージ
\n" "\n" "

\n" "

" << subject << "

\n" "
\n"
        "名前: " << name << "\n"
        "日時: " << now << "\n"
        "IPアドレス: " << ipaddr() << "\n"
        "
\n" << message << "\n" "
\n
\n" "\n"; }