部分のみを抜き出すと以下になります。いう連想配列に格納されます。属性は「name」と「age」なので、以下のようにして送信されたデータを取得できます。属性は、フォーム部品の種類によって値の意味が異なりますが、初期値を設定しておくことが可能です。属性)」を参照ください。属性に値を設定すると初期値とすることができます。属性に初期値を設定した場合に、ユーザーが何も入力しないでフォームを送信すると初期値がそのフォーム部品の値として送信されますが、ユーザーが値を入力するとその値が送信されます。はまだ存在していません(定義されていません)。index:)が表示されないようにしています。使って、変数が定義されているかを調べて、条件分岐する方法などもあります。関数を使用してエスケープ(サニタイズ)処理(HTMLの特殊文字を無効化)します。この処理を行わないと、XSS(クロスサイトスクリプティング)の脆弱性が発生するので、必ず行うようにします。悪意のある攻撃者はブラウザを使わずにサーバーにデータを送信することができるので、ユーザーからの入力値はサーバーで受け取った時に必ず検証する必要があります。前述の例(form_sample1.php)での、ユーザーの入力データの出力(表示)は以下のようになっています。エンティティ(文字参照)に変換して特殊文字を無効化します。)以下がパラメータです。(実際には、この他にもパラメータやオプションがあります)string(string):変換される文字列。flags(int):ENT_QUOTES(*必ずこれを指定する):シングルクオートとダブルクオートを共に変換します。(フラグは他にもあります)encoding(string):文字を変換するときに使うエンコーディングを定義します。(オプションですが、必ず指定します)この関数は、関数名も長く、パラメータも多いので頻繁に使用する場合は、以下のようにユーザー定義関数にしておくと便利です。定義しておけば、前述の記述は以下のように簡単になります。?>また、前述の例(form_sample1.php)のもう1つの出力は以下のようになっています。型に変換(型キャスト)します。これにより、おかしな文字が入力されることを防ぎます。)を注入する攻撃全般を指します。後に「?」や「#」に続けて任意の文字列を指定できます。攻撃が成功してしまいます。脆弱性のあるコードになります。外部からの入力を出力する場合は、必ず適切にエスケープ処理することが対策になります。ユーザーからの入力値かどうかを判断するのは難しい場合もあるので、基本的に「表示する全ての変数をエスケープ処理する」ようにすると良いでしょう。内の特別な意味を持つ文字「<」「>」「&」「"」「'」を文字参照に変換します。タグなどの特別な意味はなくなり、そのまま文字列として表示されます。関数の第2パラメータに必ず「ENT_QUOTES」を指定し、第3パラメータのエンコーディングも必ず指定するようにします。関数を使ってエスケープ処理して出力します。防げない場合があるので注意が必要です。防ぐことができなません。記述を防ぐことができません。実行されてしまいます。記述を防ぐことができません。?>">click</a>このような場所には、外部からの入力を表示しないようにします。入力値の検証を行わないで属性値にユーザーの入力値を出力しないことが大切です。以下のような場所はエスケープ処理ができないのでこのようなコードは書いてはいけません。?></style>以下の値もそのままページに表示(出力)せずに、必ずエスケープ処理をして表示する必要があります。$_SERVER['HTTP_USER_AGENT']$_SERVER['HTTP_REFFERER']$_SERVER['PHP_SELF']また、不完全なマルチバイト文字列による攻撃などもあるので、検証の際に文字エンコーディングのチェックなども行うようにする必要があります。関数では対応できません。関数というタグを取り除く関数がありますが、第2パラメータに許可するタグを指定すると、そのタグの属性値もそのまま残ってしまうため、攻撃が可能になり脆弱性があります。ライブラリを使うのが無難です。一部として送信します。リクエストを指定したフォームの例です。処理も記述してあります。使ってまだ変数が定義されていない場合は、空文字を指定してあります。