外部から来る変数HTML フォーム (GET と POST)フォームが PHP スクリプトに投稿された時、フォームから渡された全て の変数は PHP により自動的にスクリプトから使用可能となります。 この情報にアクセスする手段は複数あります。例を以下に示します。
例1 簡単なHTMLフォーム <form action="foo.php" method="post"> Name: <input type="text" name="username" /><br /> Email: <input type="text" name="email" /><br /> <input type="submit" name="submit" value="Submit me!" /> </form> HTML フォームからデータにアクセスする方法は二種類だけしかありません。 現在使える方法を、以下にまとめます。
例2 簡単なPOST HTMLフォームからのデータにアクセスする
GETフォームを使用した場合も同じですが、かわりに適当な定義済みの
GET変数を使用するところが異なります。
GETは、
PHPではフォーム変数のコンテキスト内で配列が使用可能です(FAQの関連箇所も参照ください)。 例えば、関連する変数をグループ化したり、select inputで複数の値を 取得するといったことが可能です。フォームを同じスクリプトに投稿し、 投稿したデータを表示する例を示します。
例3 より複雑なフォーム変数
IMAGE SUBMIT 変数名フォームを投稿する際、次のタグのように標準の投稿ボタンの代わりに 画像を使用することができます。 <input type="image" src="image.gif" name="sub" /> 画像のどこかがクリックされた場合、二つの変数 sub_x および sub_y が付け加えられてこのフォームはサーバーに転送されます。これらの変 数は、ユーザーがこの画像をクリックした座標を示しています。経験の ある人は、ブラウザにより送られた変数の名前においてアンダースコア がピリオドになってしまっていることを心配するかもしれません。 しかし、PHP はピリオドをアンダースコアに自動的に変換します。 HTTP CookiePHP は、» RFC 6265 に定義されたHTTP Cookieを完全にサポートします。Cookieは、リモート ブラウザにデータを保持し、再訪するユーザーを追跡し、特定する機構 です。setcookie 関数によりCookieをセットす ることができます。Cookieは、HTTP ヘッダの一部なので、SetCookie 関数をブラウザに何かを出力する前にコールする必要があります。 この制約は、header 関数のものと同じです。 Cookieのデータは、$_COOKIE のような適当なCookieデータ 配列で参照可能です。また、 $_REQUESTでも 参照可能です。詳細および例については、 setcookieのマニュアルページを参照ください。
単一のCookieに複数の値を代入したい場合は、配列として 代入することが可能です。以下に例を示します。
上記スクリプトにおいては、2つの異なるCookieを生成されますが、 この場合、スクリプトでは MyCookie という単一の配列になります。 一つのCookieに複数の値を設定したい場合、最初の値に serializeまたは explodeを用いることを考えてください。 Cookieは、パスまたはドメインが異ならない限り、 以前のクッキーをブラウザ上の同じ名前の変数に置き換えることに 注意してください。 さて、買い物かご(Shopping Cart) プログラムの場合、カウンタを保持し、 受け渡したいと思うかもしれません。 これは、次のようになります。 例4 setcookieの例
外部変数名のドット通常、PHP はスクリプトに渡された変数の名前を変更しません。しかし、 ドット(ピリオド、終止符)はPHPの変数名で有効な文字ではないというこ とに注意する必要があります。次の例を見てみましょう。
重要なことを記述しておくと、このため、外部変数に含まれるドットを PHP は自動的にアンダースコアに変換します。 変数の型の定義PHPは、変数の型を定義し、必要に応じて変換します。このため、ある変 数の型がある時点で常に明らかであるわけではありません。PHPは、変数 の型を調べる複数の関数をサポートしています。それらは、 gettype, is_array, is_float, is_int, is_object, is_string です。 型の章も参照ください。 HTTP はテキストプロトコルなので、 $_POST および $_GET のような スーパーグローバル配列 に入ってくる内容は、全てとは言えないまでも、ほとんどは文字列のままです。 PHP は決して値を特定の型に変換したりはしません。 以下の例では、$_GET["var1"] は "null" という文字列を含みますし、 $_GET["var2"] は、文字列 "123" を含みます。 /index.php?var1=null&var2=123 変更履歴
|