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を使うのが基本です。用途に応じて適切なスーパーグローバル変数を選択することで、安全かつ効率的にユーザーデータを処理できます。
-
JavaScript変数の値をPHPに渡して取得する方法をわかりやすく解説
JavaScript変数をPHPで扱う基本の考え方JavaScriptとPHPは実行されるタイミングが異なります。PHPはサーバーサイドで先に処理され、JavaScriptはその結果を受け取ったブラウザ(クライアントサイド)で後から動作します。そのため、JavaScriptの変数をPHPへ「直接」渡すことはできず、何らかの方法でサーバーへ値を送信する必要があります。ただし、同じページ内でJavaScriptの変数の値を出力・表示するだけであれば、以下のように簡単に実現できます。同じページ内でJavaScript変数の値を表示するサンプルコード<script> var res
-
C#でJavaのfinal変数を実現する方法:readonlyとsealedキーワードの使い方
Javaには変数やクラスを固定するためのfinalキーワードが用意されていますが、C#には同名のキーワードは存在しません。しかし、C#でも同等の機能を実現することは可能です。それにはsealedまたはreadonlyキーワードを使用します。 readonlyキーワードとは readonly(読み取り専用)修飾子を付けた変数には、値を一度しか代入できません。つまり、readonlyとして宣言されたフィールドは、オブジェクトの構築時(コンストラクタ内)にのみ値を設定でき、その後は一切変更することができません。 この特性により、インスタンスごとに異なる値を持たせつつ、生成後は不変であることを保証した