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デコードし文字列を[&]と[=]で区切る必要があります。

Posted in: 
0 コメント:
コメントを投稿