printf("Content-type: text/html\n\n"); // printf("Content-type: text/plain\n\n");
#include <stdio.h> int main() { char str[1000]; printf("Content-type: text/html\n\n"); // HTTP ヘッダの送信 printf("<HTML>\n"); printf("<HEAD>\n"); printf(" <TITLE>FORM と CGI</TITLE>\n"); printf(" <LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"../../master.css\">\n"); printf(" <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n"); printf("</HEAD>\n"); printf("<BODY CLASS=\"white\">\n"); printf(" <H1 CLASS=\"center\">送信されたデータ</H1>\n"); // クライアントから送られてきたデータの受け取り while (scanf("%s", str) != EOF) { printf("%s<BR>\n", str); } printf("</BODY>\n"); printf("</HTML>\n"); return 0; }
ENCTYPE="application/x-www-form-urlencoded" の場合
<FORM ACTION="test.cgi" METHOD="post" ENCTYPE="application/x-www-form-urlencoded"> <LABEL>氏名: </LABEL><INPUT TYPE="text" NAME="shimei" STYLE="font-size: 90%"></LABEL><BR> <FIELDSET> <LEGEND>性別</LEGEND> <INPUT TYPE="radio" NAME="sex" VALUE="Male"> 男性<BR> <INPUT TYPE="radio" NAME="sex" VALUE="Female"> 女性<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな野菜</LEGEND> <INPUT TYPE="checkbox" NAME="v1" VALUE="kyabetu"> キャベツ<BR> <INPUT TYPE="checkbox" NAME="v2" VALUE="daikon"> 大根<BR> <INPUT TYPE="checkbox" NAME="v3" VALUE="jagaimo"> ジャガイモ<BR> <INPUT TYPE="checkbox" NAME="v4" VALUE="tomato"> トマト<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな果物</LEGEND STYLE="font-size: 90%"> <SELECT MULTIPLE SIZE="3" NAME="fruit" STYLE="font-size: 90%"> <OPTION VALUE="orange"> 蜜柑 </OPTION><BR> <OPTION VALUE="apple"> 林檎 </OPTION><BR> <OPTION VALUE="grape"> 葡萄 </OPTION><BR> </SELECT> </FIELDSET> <P STYLE="text-align: center"><INPUT TYPE="submit" VALUE="送信" STYLE="font-size: 90%"></P> </FORM>
ENCTYPE="text/plain" の場合
<FORM ACTION="test.cgi" METHOD="post" ENCTYPE="text/plain"> <LABEL>氏名: </LABEL><INPUT TYPE="text" NAME="shimei" STYLE="font-size: 90%"></LABEL><BR> <FIELDSET> <LEGEND>性別</LEGEND> <INPUT TYPE="radio" NAME="sex" VALUE="Male"> 男性<BR> <INPUT TYPE="radio" NAME="sex" VALUE="Female"> 女性<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな野菜</LEGEND> <INPUT TYPE="checkbox" NAME="v1" VALUE="kyabetu"> キャベツ<BR> <INPUT TYPE="checkbox" NAME="v2" VALUE="daikon"> 大根<BR> <INPUT TYPE="checkbox" NAME="v3" VALUE="jagaimo"> ジャガイモ<BR> <INPUT TYPE="checkbox" NAME="v4" VALUE="tomato"> トマト<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな果物</LEGEND> <SELECT MULTIPLE SIZE="3" NAME="fruit" STYLE="font-size: 90%"> <OPTION VALUE="orange"> 蜜柑 </OPTION><BR> <OPTION VALUE="apple"> 林檎 </OPTION><BR> <OPTION VALUE="grape"> 葡萄 </OPTION><BR> </SELECT> </FIELDSET> <P STYLE="text-align: center"><INPUT TYPE="submit" VALUE="送信" STYLE="font-size: 90%"></P> </FORM>
<!DOCTYPE HTML> <HTML> <HEAD> <TITLE>FORM と CGI</TITLE> <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> </HEAD> <H1 CLASS="center">送信されたデータ</H1> <PRE> <?php print_r($_GET); // METHOD="post" の場合は,$_POST ?> </PRE> </BODY> </HTML>
METHOD="get" の場合
<FORM ACTION="test1.php" METHOD="get"> <LABEL>氏名: </LABEL><INPUT TYPE="text" NAME="shimei" STYLE="font-size: 90%"></LABEL><BR> <FIELDSET> <LEGEND>性別</LEGEND> <INPUT TYPE="radio" NAME="sex" VALUE="Male"> 男性<BR> <INPUT TYPE="radio" NAME="sex" VALUE="Female"> 女性<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな野菜</LEGEND> <INPUT TYPE="checkbox" NAME="v1" VALUE="kyabetu"> キャベツ<BR> <INPUT TYPE="checkbox" NAME="v2" VALUE="daikon"> 大根<BR> <INPUT TYPE="checkbox" NAME="v3" VALUE="jagaimo"> ジャガイモ<BR> <INPUT TYPE="checkbox" NAME="v4" VALUE="tomato"> トマト<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな果物</LEGEND> <SELECT MULTIPLE SIZE="3" NAME="fruit" STYLE="font-size: 90%"> <OPTION VALUE="orange"> 蜜柑 </OPTION><BR> <OPTION VALUE="apple"> 林檎 </OPTION><BR> <OPTION VALUE="grape"> 葡萄 </OPTION><BR> </SELECT> </FIELDSET> <P STYLE="text-align: center"><INPUT TYPE="submit" VALUE="送信" STYLE="font-size: 90%"></P> </FORM>
METHOD="post" の場合
<FORM ACTION="test2.php" METHOD="post"> <LABEL>氏名: </LABEL><INPUT TYPE="text" NAME="shimei" STYLE="font-size: 90%"></LABEL><BR> <FIELDSET> <LEGEND>性別</LEGEND> <INPUT TYPE="radio" NAME="sex" VALUE="Male"> 男性<BR> <INPUT TYPE="radio" NAME="sex" VALUE="Female"> 女性<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな野菜</LEGEND> <INPUT TYPE="checkbox" NAME="v1" VALUE="kyabetu"> キャベツ<BR> <INPUT TYPE="checkbox" NAME="v2" VALUE="daikon"> 大根<BR> <INPUT TYPE="checkbox" NAME="v3" VALUE="jagaimo"> ジャガイモ<BR> <INPUT TYPE="checkbox" NAME="v4" VALUE="tomato"> トマト<BR> </FIELDSET> <FIELDSET> <LEGEND>好きな果物</LEGEND> <SELECT MULTIPLE SIZE="3" NAME="fruit" STYLE="font-size: 90%"> <OPTION VALUE="orange"> 蜜柑 </OPTION><BR> <OPTION VALUE="apple"> 林檎 </OPTION><BR> <OPTION VALUE="grape"> 葡萄 </OPTION><BR> </SELECT> </FIELDSET> <P STYLE="text-align: center"><INPUT TYPE="submit" VALUE="送信" STYLE="font-size: 90%"></P> </FORM>
<A HREF="test3.php?par1=10&par2=abc">
<A HREF="test3.htm?par1=10&par2=abc">
test3.php
<!DOCTYPE HTML> <HTML> <HEAD> <TITLE>データの受け渡し</TITLE> <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> <SCRIPT TYPE="text/javascript"> function GetParameter() { let result = new Array(); if(1 < window.location.search.length) { // 最初の1文字 (?記号) を除いた文字列を取得する let str = window.location.search.substring(1); // 区切り記号 (&) で文字列を配列に分割する let param = str.split('&'); for(let i1 = 0; i1 < param.length; i1++ ) { // パラメータ名とパラメータ値に分割する let element = param[i1].split('='); let Name = decodeURIComponent(element[0]); let Value = decodeURIComponent(element[1]); // パラメータ名をキーとして連想配列に追加する result[Name] = Value; } } return result; } </SCRIPT> </HEAD> <BODY CLASS="white"> <H1 CLASS="center">送信されたデータ</H1> <H3>PHP による方法</H3> <PRE> <?php print_r($_GET); ?> </PRE> <H3>JavaScript による方法</H3> <SCRIPT TYPE="text/javascript"> let result = GetParameter(); document.write(result['par1'] + "<BR>"); document.write(result['par2'] + "<BR>"); </SCRIPT> </BODY> </HTML>
test3.htm
<!DOCTYPE HTML> <HTML> <HEAD> <TITLE>データの受け渡し</TITLE> <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> <SCRIPT TYPE="text/javascript"> function GetParameter() { let result = new Array(); if(1 < window.location.search.length) { // 最初の1文字 (?記号) を除いた文字列を取得する let str = window.location.search.substring(1); // 区切り記号 (&) で文字列を配列に分割する let param = str.split('&'); for(let i1 = 0; i1 < param.length; i1++ ) { // パラメータ名とパラメータ値に分割する let element = param[i1].split('='); let Name = decodeURIComponent(element[0]); let Value = decodeURIComponent(element[1]); // パラメータ名をキーとして連想配列に追加する result[Name] = Value; } } return result; } </SCRIPT> </HEAD> <BODY CLASS="white"> <H1 CLASS="center">送信されたデータ</H1> <SCRIPT TYPE="text/javascript"> let result = GetParameter(); document.write(result['par1'] + "<BR>"); document.write(result['par2'] + "<BR>"); </SCRIPT> </BODY> </HTML>
test4.php
<!DOCTYPE HTML> <HTML> <HEAD> <TITLE>データの受け渡し</TITLE> <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> </HEAD> <BODY CLASS="white"> <?php $x[0] = "fig0.jpg"; // PHP で得られた結果 $x[1] = "fig1.jpg"; // PHP で得られた結果 ?> <SPAN ID="a0" STYLE="display:none"><?php echo $x[0] ?></SPAN> <SPAN ID="a1" STYLE="display:none"><?php echo $x[1] ?></SPAN> <SCRIPT TYPE="text/javascript"> let x = new Array(); x[0] = document.getElementById("a0").innerHTML; x[1] = document.getElementById("a1").innerHTML; document.write(x[0] + "<BR>"); document.write(x[1] + "<BR>"); </SCRIPT> </BODY> </HTML>