PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで外部ソースから変数を受け取る方法|フォーム・画像ボタン・Cookieの基本

はじめに

PHPでは、HTMLフォームの入力要素やCookie、画像送信ボタンの画面座標といった外部ソースから、スクリプトの変数空間(名前空間)へデータが自動的に取り込まれます。本記事では、これらの外部データをPHPで受け取る基本的な方法を、具体的なコード例とともに解説します。

HTMLフォーム要素からのデータ取得

Webページ上のHTMLフォームからPHPスクリプトへデータが送信されると、その内容は$_POST$_GET$_REQUESTというスーパーグローバル変数として自動的にスクリプト内で利用可能になります。

以下は、典型的なHTMLフォームの例です。

<form action="testscript.php" method="POST">
   <input type="text" name="name">
   <input type="text" name="age">
   <input type="submit" value="submit">
</form>

ユーザーが入力したデータは、PHPスクリプト側では$_POSTという連想配列に格納されます。

<?php
echo "Name : " . $_POST["name"] . "<br>";
echo "Age : " . $_POST["age"];
?>

このHTMLページをドキュメントルートにtestscript.phpと一緒に配置し、ブラウザで開いてデータを入力すると、次のような結果が表示されます。

Name : xyz
Age : 20

フォームのmethod属性に「GET」を指定した場合は、action属性のURLがHTTP GETメソッドでリクエストされ、フォームのデータは$_GET配列に格納されます。また、$_REQUEST配列は$_GET$_POST$_COOKIEという定義済み変数の内容をまとめて保持しています。たとえば、「age」という名前のフォーム要素のデータには、$_GET['age']および$_REQUEST['age']としてアクセスできます。

画像送信ボタンの座標

通常の送信ボタンに加えて、HTMLではimageタイプのinput要素を使うことで、任意の画像をボタンとして利用できます。

<input type="image" src="image.gif" name="sub" />

この場合、ユーザーが画像をクリックすると、クリック位置のX座標とY座標もリクエストとともに送信されます。これらの値には、それぞれ$_POST['sub_x']$_POST['sub_y']としてアクセス可能です。

Cookie変数

PHPはCookieの保存と取得の仕組みを標準でサポートしています。Cookieとは、サーバーがクライアント(ブラウザ)側のコンピュータにレスポンスとともに保存するデータのことです。以降、クライアントが行うすべてのリクエストでは、HTMLフォームのパラメータなどと同様に、Cookieもサーバーへ送り返されます。

PHPではsetcookie()関数を使ってCookieを保存し、読み出しは$_COOKIE配列を通じて行います。以下に簡単な例を示します。

サンプルコード

<?php
if (isset($_COOKIE['name']) && isset($_COOKIE['age'])) {
    echo "Name:" . $_COOKIE['name'] . " age:" . $_COOKIE['age'];
}
setcookie('name', 'XYZ');
setcookie('age', 20);
?>

このスクリプトをブラウザから最初に呼び出すと、「name」と「age」の2つのCookieが設定されます。2回目以降のアクセスでは、これらのCookieが$_COOKIE配列経由でサーバーに送信され、次のように表示されます。

実行結果

Name:XYZ age:20

まとめ

PHPにおける外部データの受け取りは、フォームなら$_POST$_GET、両方をまとめて扱うなら$_REQUEST、Cookieなら$_COOKIEを使うのが基本です。用途に応じて適切なスーパーグローバル変数を選択することで、安全かつ効率的にユーザーデータを処理できます。

  1. JavaScript変数の値をPHPに渡して取得する方法をわかりやすく解説

    JavaScript変数をPHPで扱う基本の考え方JavaScriptとPHPは実行されるタイミングが異なります。PHPはサーバーサイドで先に処理され、JavaScriptはその結果を受け取ったブラウザ(クライアントサイド)で後から動作します。そのため、JavaScriptの変数をPHPへ「直接」渡すことはできず、何らかの方法でサーバーへ値を送信する必要があります。ただし、同じページ内でJavaScriptの変数の値を出力・表示するだけであれば、以下のように簡単に実現できます。同じページ内でJavaScript変数の値を表示するサンプルコード<script> var res

  2. C#でJavaのfinal変数を実現する方法:readonlyとsealedキーワードの使い方

    Javaには変数やクラスを固定するためのfinalキーワードが用意されていますが、C#には同名のキーワードは存在しません。しかし、C#でも同等の機能を実現することは可能です。それにはsealedまたはreadonlyキーワードを使用します。 readonlyキーワードとは readonly(読み取り専用)修飾子を付けた変数には、値を一度しか代入できません。つまり、readonlyとして宣言されたフィールドは、オブジェクトの構築時(コンストラクタ内)にのみ値を設定でき、その後は一切変更することができません。 この特性により、インスタンスごとに異なる値を持たせつつ、生成後は不変であることを保証した