PHPでPOSTメソッドを使用し、サーバー通信(情報送信)をする

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>

今回は、フォームに入力した名前をPOSTで送信し、送信した際にisset関数で、入力した名前がはいっているかどうかをチェックし、入っていれば、echo文で文字列を出力してみます。

■実行

では、このスクリプトを「post_method_example.php」という名前で保存し、実行させてみます。

実行させてみると、フォームが表示されますので、入力欄にテストで名前を入力します。入力後、「送信」ボタンをクリックします。

クリックすると、POSTでデータ送信が行われ、入力した名前がはいっているかどうかをチェックされ、echo文で文字列が出力されました。なお、URLを確認すると、GETメソッドを使用した場合とは異なり、クエリー文字列が表示されないことも確認できました。

コメント

タイトルとURLをコピーしました