13:23:01TwitterFacebookはてブPocketLINE$_GETはPHPにおいてフォームやURLのパラメータから値を取得するコードです。フォームから取得することが多いため、結果的にHTMLとの組み合わせで使用することがほとんどです。このページではHTMLとPHPを連動させて$_GETで値を取得する方法を紹介します。$_GETを使ってページ遷移を行う$_GETを使ってHTMLから値を取得それではさっそくサンプルコードを紹介します。HTMLから値を取得するので、まずはHTMLからです。HTMLのコードは以下のようになります。value="送信"></p></form>以上のようなシンプルなHTMLを用意します。formの中でactionとmethodを指定していますが、これはそれぞれ送信先のファイルとその方法を指定する部分です。HTMLを勉強した方なら見たことがあるかと思います。このサンプルコードではactionは指定なしで、methodでgetを指定しています。methodにgetを指定すると、PHP側から$_GETを使って受け取ることが可能になります。次に、PHP側の処理を実装します。サンプルコードは以下のようになります。$_GET["last_name"];?>こちらもシンプルなPHPコードです。PHP側から$_GETを指定することで、HTMLのinput属性の値を取得できることになります。コードを実行すると、以下のようになります。仕組みを細かく把握する必要はないのですが、ざっくり言うとまずHTMLのformのmethodでgetを指定すると、URLにパラメータが渡ることになります。それをPHPの$_GETで取得しています。そのためHTMLからURLにパラメータを送るのではなく、リンクを作成してそれをPHP側から$_GETで取得することも可能です。その際にHTMLで作成するリンクは以下のようになります。href="example.php?first_name=値&last_name=値">リンク</a>$_GETの使い方は以上のようになります。ちなみに$_GETと同じような使い方ができるコードに$_POSTがあります。$_GETと合わせて$_POSTの使い方についても把握しておくと良いでしょう。$_POSTを使ってフォームから値を取得$_POSTの使い方のサンプルコードは以下です。HTMLのコードになります。value="送信"></p></form>さきほど同様簡単なHTMLのコードを用意しました。構造自体は同じですが、methodでgetではなくpostを指定している点が先ほどとの違いです。HTMLでpostを指定すれば、PHPから$_POSTで取得できるようになります。次に、PHP側のコードは以下です。$_POST["last_name"];?>このように記述すると、$_GETのときと同様値を取得できます。$_GETと$_POSTは何が違うのでしょうか。それは、URLにパラメータを表示するかどうかです。$_GETはURLにパラメータを表示しますが、$_POSTでは表示しません。表示しないのかというと、セキュリティ強化のためです。パスワードなどは表示するとリスクがあるので、$_POSTを使用するのが一般的になります。htmlspecialcharsの使い方$_GETや$_POSTで値を取得できますが、それをブラウザに表示する際にはhtmlspecialcharsを使用するのが一般的です。htmlspecialcharsを使用することで、悪意のあるコードの埋め込みを防ぐことができます。構文は以下のようになります。文字コード);エスケープする文字列はそのままの意味で、対象となる文字列を指します。第二引数のエスケープの種類については、どのようにエスケープするのかを指定します。わからない場合、「ENT_QUOTES」を指定しておけば問題なく、特別な理由がなければENT_QUOTESを指定することになるでしょう。他にもENT_COMPATやENT_NOQUOTESを指定することが可能ですが、エスケープできる文字はENT_QUOTESの方が多いです。一般的に使用されていることを考えてもエスケープできる文字が多いことを考えても、ENT_QUOTESが良いかと思います。$_GETを使ってページ遷移を行う以上を踏まえ、$_GETを使ってページ遷移を行う実践的な例を紹介します。実践的と言っても実際に開発で使うコードに比べるとシンプルで、あくまでも土台となるサンプルコードのイメージになります。?></p></body></html>このコードが何をやっているかというと、10ページまでページ遷移させています。10と宣言し、この数字になるまでif文で条件判定しながら$_GETでページを取得します。最初から完璧に理解する必要はありませんが、コードの内容的にまったく理解不能ということはないかと思います。上のサンプルコードを少しプラスすればそれで実際の開発で使われるレベルのコードになるので、$_GETも$_POSTも使いこなせるようになります。