通信状態を維持できないHTTP通信
HTTPを使った通信ではWebページごとに、通信(セッション)が独立しているために、HTTP通信時ごとに状態はリセットされてしまう。例えば、よく会員制サイトなどでログインしているか否かなどの判断を処理するために、”HTTPプロトコル”などの”TCP/IPプロトコル”だけでは、ログイン状態を維持することが出来ない。
HTTP通信で通信状態を維持させる技術
通信状態を維持させる方法として、3つの技術がある。
セッション(Session)
セッションとは、「サーバー側」に一意となるIDを保存させて、遷移先のページで照合してユーザーを特定する方法である。
クッキー(Cookie)
セッションとは、「ユーザー側」に一意となるIDを保存させて、遷移先のページで照合してユーザーを特定する方法である。
formタグ
formタグとは、遷移先のページにデータを送るHTMLタグである。遷移先に送るだけなので、上記の「セッション」または「クッキー」のどちらかを、組み合わせて利用する。
遷移先のアドレスに埋め込む
formタグを使って遷移先のWebページにデータを送ることが一般的であるが、このときパラメータとして”GETメソッド”か”POSTメソッド”を選択することになる。”GETメソッド”は遷移先のアドレスにデータを付加して送る方法であり、”POSTメソッド”はHTTPプロトコルの仕様を利用して遷移先に送る方法である。
formタグを使わずにaタグで遷移先にデータを送る
さて、”GETメソッド”は「アドレスにデータを付加して送る」と記載したが、実は手作業でアドレスに付加して送ることも出来てしまう。たとえば・・・
<a href="https://sample-address.com/next_page.html">次のページへ</a>
次に”hrefパラメータ”の値に注目してほしい。
<a href="https://sample-address.com/next_page.html?id=1&name=taro&age=20">次のページへ</a>
"?id=1&name=taro&age=20"
というパラメータは、formタグで”GETメソッド”を利用した際に自動的にアドレスにふかされているものと同一である。
ただし、formタグではなく、ただのaタグでパラメータを手作業で付加して次のページに遷移している。
実は、これでもformタグの”GETメソッド”と同じように、遷移先でパラメータを扱うことが出来る。たとえば・・・
echo $_GET[id];
> 1
echo $_GET[name];
> taro
echo $_GET[age];
> 20
※コードに不備があったらお知らせ頂きたい。
※上記の例はPHP言語で表現したが、これは筆者の知識がこれしかないためであるw
繰り返しになるが、HTMLのaタグに手作業でパラメータを設定すると、さもformタグの”GETメソッド”で送ったときと同じように、扱うことが出来る。
formタグを使うほどではないが、遷移先にパラメータを送りたいときに意外と便利なので、忘れないように書いた。