フォームが PHP スクリプトに投稿された時、フォームから渡された全て の変数は PHP により自動的にスクリプトから使用可能となります。 設定オプションtrack_vars がオンの場合、これらの変数は、変数のソースに応じて連想配列 $HTTP_POST_VARS, $HTTP_GET_VARS, かつ/または $HTTP_POST_FILES に代入されます。
これらの変数に関する詳細については、定義済の変数を参照 下さい。
上のフォームが投稿された際、text inputで入力された値は、 $HTTP_POST_VARS['username']で利用可能となります。 register_globals 設定ディレクティブがonの場合、この変数はグローバルスコープで $username として利用可能となります。
注意 magic_quotes_gpcの設定 はGET、POSTそしてCookieの値に影響します。onになっていると (It's "PHP!") という値は自動的に (It\'s \"PHP!\") となり、DBへの挿入時の エスケープが不要になります。addslashes()、 stripslashes()そしてmagic_quotes_sybaseも 参照してください。
PHPではフォーム変数のコンテキスト内で配列が使用可能です(FAQの関連箇所も参照してください)。 例えば、関連する変数をグループ化したり、select inputで複数の値を 取得するといったことが可能です。
PHP 3では、配列変数は1次元配列に限定されていました。PHP 4ではこの ような制約はありません。
フォームを投稿する際、次のタグのように標準の投稿ボタンの代わりに 画像を使用することができます。
画像のどこかがクリックされた場合、二つの変数 sub_x および sub_y が付け加えられてこのフォームはサーバーに転送されます。これらの変 数は、ユーザーがこの画像をクリックした座標を示しています。経験の ある人は、ブラウザにより送られた変数の名前においてアンダースコア がピリオドになってしまっていることを心配するかもしれません。 しかし、PHP はピリオドをアンダースコアに自動的に変換します。
PHP は、Netscape の規約 に定 義されたHTTP クッキーを完全にサポートします。クッキーは、リモート ブラウザにデータを保持し、再訪するユーザーを追跡し、特定する機構 です。SetCookie() 関数によりクッキーをセットす ることができます。クッキーは、HTTP ヘッダの一部なので、SetCookie 関数をブラウザに何かを出力する前にコールする必要があります。 この制約は、header() 関数のものと同じです。 クライアントから送られる全てのクッキーは、GET や POST メソッドの データと全く同じように自勧?に PHP 変数に変換されます。
単一のクッキーに複数の値を代入したい場合は、 [] をクッキー名に付けてください。以下に例を 示します。
クッキーは、パスまたはドメインが異ならない限り、 以前のクッキーをブラウザ上の同じ名前の変数に置き換えることに 注意してください。 さて、買い牧?(Shopping Cart) プログラムの場合、カウンタを保持し、 受け渡したいと思うかもしれません。 これは、次のようになります。
PHP は、環境変数を自動的に通常の PHP 変数として使用可能とします。
情報は、GET、POST、Cookie からも自動的に来るため、意図した種類の 変数を確実に得るために環境変数から変数を明示的に取得する方が好ま しいということが時々あります。getenv() 関数を このために使用することができます。環境変数を putenv() 関数で設定することもできます。
通常、PHP はスクリプトに渡された変数の名前を変更しません。しかし、 ドット(ピリオド、終止符)はPHPの変数名で有効な文字ではないというこ とに注意する必要があります。次の例を見てみましょう。
$varname.ext; /* 無効な変数名 */ |
重要なことを記述しておくと、このため、外部変数に含まれるドットを PHP は自動的にアンダースコアに変換します。
PHPは、変数の型を定義し、必要に応じて変換します。このため、ある変 数の型がある時点で常に明らかであるわけではありません。PHPは、変数 の型を調べる複数の関数をサポートしています。それらは、 gettype(), is_long(), is_double(), is_string(), is_array(), is_object() です。