webサイト制作の勉強|2023年11月クラス用ブログ

ファリカテクニカルアカデミーのwebサイト制作科の授業解説ブログです。フェリカテクニカルアカデミーは池袋にある求職者支援訓練の学校です。

getとpostを使ったフォーム送信

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);

PHP: htmlspecialchars - Manual