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 コメント:
コメントを投稿