PHPでPOSTメソッドを使用し、サーバー通信(情報送信)をしてみます。
Webブラウザは、通常、GETとPOSTという2つのHTTP(Hypertext Transfer Protocol)メソッドのいずれかを使用してサーバーと通信することができます。
なお、今回はPOSTメソッドについて解説しています。POSTメソッドは、データはパッケージとして、処理スクリプト(すぐ動くプログラム)との別の通信でサーバーに送信されます。POSTメソッドで送信されたデータは、URLには表示されません。
■メリット・デメリット
・ユーザーが入力した情報が、URLのクエリー文字列やサーバーのログに表示されることがないため、GETメソッドよりも安全性が高い。
・POSTメソッドでは、渡せるデータ量に制限があり、テキストデータだけでなく、バイナリデータ(ファイルのアップロード)もPOSTメソッドで送信することができます。
・POSTメソッドで送信されたデータはURL上に表示されないため、GETメソッドのように、特定のクエリを持つページをブックマークすることはできません。
■環境
・Windows10
・WampServer Version 3.2.3 64bit
・PHP Version 7.3.21
■POSTメソッドを使用し、データを送信し送信されたデータにアクセスする
PHPでは、 $_POSTというスーパーグローバル変数を用意しており、POSTメソッドで送信された情報や、HTMLフォームで method=”post” を使用して送信された情報にアクセスすることができますので、今回は実験としてHTMLフォームで method=”post” を使用しデータ送信、その後送信されたデータにアクセスしてみます。
■コード
<html lang="ja">
<head>
<title>PHPでPOSTメソッドを使用する</title>
</head>
<body>
<?php
if(isset($_POST["name"])){
echo "<p>こんにちは、 ".$_POST["name"]."</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">名前:</label>
<input type="text" name="name" id="inputName">
<input type="submit" value="送信">
</form>
</body>
</html>
今回は、フォームに入力した名前をPOSTで送信し、送信した際にisset関数で、入力した名前がはいっているかどうかをチェックし、入っていれば、echo文で文字列を出力してみます。
■実行
では、このスクリプトを「post_method_example.php」という名前で保存し、実行させてみます。
実行させてみると、フォームが表示されますので、入力欄にテストで名前を入力します。入力後、「送信」ボタンをクリックします。
クリックすると、POSTでデータ送信が行われ、入力した名前がはいっているかどうかをチェックされ、echo文で文字列が出力されました。なお、URLを確認すると、GETメソッドを使用した場合とは異なり、クエリー文字列が表示されないことも確認できました。
コメント