[目次]
HTML FORM と HTTP POST Method | Webプログラミング!(2021年度)
HTTP POST Method, HTML Form
説明
- Chrome の Developer Tools では, Network で見られるログの中から, Method=POSTの 行を選ぶと, Request と Response の内容が確認できる.
- PHP側で echo(file_get_contents(php://input));
サンプル1
サンプル1index.php
こっちはPHPでなくHTMLでもいい
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>test of html form and post method</title>
</head>
<body>
<h1>FormとPOSTのサンプル</h1>
<form action="result.php" method="post">
<h2>隠しフィールド</h2>
<input type="hidden" name="mode" value="1"/>
<h2>学籍番号(セレクトボックス+テキスト)</h2>
<select name="Fgakubu">
<option value="t">理工</option>
<option value="c">社会</option>
<option value="w" selected="selected">国際</option>
<option value="x">他</option>
</select>
<input type="text" name="Fnumber" value="t000000" size="6"/>
<h2>暗証番号(テキスト)</h2>
<input type="text" name="Fmagicnum" size="4"/><br/>
<h2>選択肢(ラジオボタン)</h2>
a<input type="radio" name="Fchoice" value="1">
b<input type="radio" name="Fchoice" value="2">
c<input type="radio" name="Fchoice" value="3" checked="checked">
d<input type="radio" name="Fchoice" value="4">
<br/>
<h2>長文(テキストエリア)</h2>
<textarea name="Fcomment" rows="5" cols="20" wrap="off"></textarea>
<h2>これは練習?(チェックボックス)</h2>
<input type="checkbox" name="Fcheck" value="1"/>はい<br/>
<input type="submit" value="送信"/>
<input type="reset" value="クリア"/>
</form>
</body>
</html>
result.php
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>送信結果</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>送信結果</h1>
<p>このサンプルこのまま使うな危険</p>
<?php
if(isset($_POST["Fgakubu"])){
$g=$_POST["Fgakubu"];
}
/* 略記 @はエラー無視を指示*/
$mo=@$_POST["mode"];
$n=@$_POST["Fnumber"];
$c=@$_POST["Fcomment"];
$m=@$_POST["Fmagicnum"];
$ch=@$_POST["Fchoice"];
$che=@$_POST["Fcheck"];
/* サーバ変数 */
$b=$_SERVER["HTTP_USER_AGENT"];
$i=$_SERVER["REMOTE_ADDR"];
$r=$_SERVER["HTTP_REFERER"];
echo "<p>input.phpからPOSTされたデータ</p>\n";
echo "<dl>\n";
echo "<dt>学部</dt><dd>$g</dd>";
echo "<dt>番号</dt><dd>$n</dd>\n";
echo "<dt>長文</dt><dd>$c</dd>\n";
echo "<dt>暗証番号</dt><dd>$m</dd>\n";
echo "<dt>選択肢</dt><dd>$ch</dd>\n";
echo "<dt>チェックボックス</dt><dd>$che</dd>\n";
echo "<dt>隠しフィールド</dt><dd>$mode</dd>\n";
echo "</dl>";
echo "<p>以下はサーバ変数</p>\n";
echo "<dl>\n";
echo "<dt>ブラウザ</dt><dd>$b</dd>\n";
echo "<dt>IPアドレス</dt><dd>$i</dd>\n";
echo "<dt>リンク元</dt><dd>$r</dd>\n";
echo "</dl>\n";
?>
<hr/>
<h3>送信されたmessage body</h3>
<pre>
<?php echo(file_get_contents("php://input")); ?>
</pre>
</body>
</html>
課題
- 九九の表を作ろう
- クエリパラメタで, 表のサイズ nxm を指定できるようにしよう.
- issetを使ってクエリパラメタが与えられなかったときの処理を書こう.