HTMLのformからGETメソッドでデータを取得してみます。
・HTML
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- </head>
- <body>
- <form action="CGIへのパス" method="get">
- <input type="text" name="text1">
- <input type="text" name="text2">
- <input type="submit" value="送信">
- </form>
- </body>
- </html>
form内にテキスト入力欄が2つ(nameは"text1"と"text2")あり、8行目で呼び出すCGIへのパスとGETメソッドを指定しています。
・c++
- #include <iostream>
- #include <string>
- int main()
- {
- // 環境変数[REQUEST_METHOD]に送信されたメソッド[GET/POST]が入ります。
- std::string request_method = getenv( "REQUEST_METHOD" );
- std::string query_string;
- if ( request_method == "GET" )
- {
- query_string = getenv( "QUERY_STRING" );
- }
- cout << "Content-Type: text/html" << endl << endl;
- cout << "<html>" << endl;
- cout << "<head><title>test</title></head>" << endl;
- cout << "<body>" << endl;
- cout << query_string << endl;
- cout << "</body>" << endl;
- cout << "</html>" << endl;
- return 0;
- }
6行目で環境変数[REQUEST_METHOD]からGET/POSTのどちらのメソッドかを取得しています。
11行目で、GETメソッドなら環境変数[QUERY_STRING]から送信されたデータを取得しています。
[QUERY_STRING]には、送信された文字列(URLエンコードされています)が入ります。
送信された文字列はnameと内容が[=]で結ばれ、各項目が[&]で結ばれています。
formのtext1に[abc]、text2に[123]と入力して送信すると
QUERY_STRINGには[text1=abc&text2=123]という文字列が入ります。
実際に使用する時は、文字列をURLデコードし文字列を[&]と[=]で区切る必要があります。
0 コメント:
コメントを投稿