PHPでは情報を別のデータに受け渡すときにGETとPOSTの2つの方法(メソッド)が使われます。
■GET
GETメソッドはURLの末尾に「?」をつけ、「パラメーター名=”値”」という形式でデータを送ります。
そのせいで、URLにデータが表示されてしまい、誰からでも見ることができます。なので、フォームやECサイトなどの個人情報を扱うデータ送信には向いていません。
また送ることのできるデータ量が制限されています。テキストデータのみ送信可能です。
Internet ExplorerではURLに使用できる文字数が2,083文字と決まっており、パスに使用できる最大文字数は2,048文字となっています。
GETメソッドはデータをURLの末尾につけて送るので、制限されることになります。
URLなどを送信したい場合はGETを使いましょう。
<getでの送信方法>
データを送信する方の設定
<form action=”output.php” method=”get“> <input type=”text” name=”name”> </form> |
データを受け取る側の設定
$name = $_GET[ ‘name’ ]; |
■POST
POSTメソッドで送るデータはWebブラウザ上には現れないので、秘匿性の高いデータやデータベースなど重要度の高いデータは必ずPOSTメソッドを使いましょう。
また、送ることの出来るデータ量も特に明確な制限があるわけでは無いので、大量のデータを送る際も必ず、POSTメソッドを使いましょう。
なので、基本的にはデータ送信の際のメソッドはPOSTと覚えておきましょう。
<POSTでの送信方法>
データを送信する方の設定
<form action=”output.php” method=”post“> <input type=”text” name=”name”> </form> |
データを受け取る側の設定
$name = $_POST[ ‘name’; |
■htmlspecialchars関数
特殊文字をブラウザで文字列として表示させるには htmlspecialchars 関数を使用します。これを使用すると、各文字列が <、>、&、” に変換されて返されます。
さらに続けて ENT_QUOTES と書くと、’ (シングルクォート)も ‘ に変換されて返されます。
この処理は、訪問者から送信されたデータを表示する際には必ず行うようにしてください。もしこの処理を忘れると、フォームから送信する際に入力されたHTMLやJavaScriptをそのまま解釈してしまいます。もし悪意あるJavaScriptが埋め込まれると訪問者全員に影響を与えてしまうため、それを防ぐためにも htmlspecialchars で安全な文字列に変換します。
以前の記述
$name = $_POST[“name”]; |
htmlspecialchars 関数を指定した場合
$name = htmlspecialchars($_POST[“name”], ENT_QUOTES); |