webアプリではユーザーに何かしらの入力を行ってもらって、そのデータを処理するということが多くあります。
例えばツイッターなんかではテキストを入力してそれをつぶやきとして登録・表示などですね。
ユーザーが入力した値の受け渡し
主に以下の3つの方法があります。
・セッション
・クッキー
リクエスト
普通にフォームがあって入力した値を送信するお馴染みのやつですね、入力した画面から次の画面まで値が送信され、その次の画面には引継ぎされません。
ただしinputのtypeをhiddenにして同じ値を次の画面にも送信すればリレーのように次の画面にも再送することは可能です。
formのmethodではgetとpostを選択でき、getの場合はurlにパラメータが付与されて送信されます。検索結果などをurlでそのままシェアするには良いかもしれません。
個人情報を扱う場合はとりあえずpostにしておきましょう。わからなければとりあえず全部postの指定でも問題はないかと思います。
セッション
リクエストは基本的に前の画面から次の画面への値の送信で、その次以降の画面に値は基本的に送り直し続ければ送信できません。
それだとログイン済みかの判定をひたすら次から次へ送信しつづけなければ維持できないということになります。
そこでセッションに入力された値などを格納しておき、次の画面移行にも何らかの値を維持させる仕組みになります。
例えばセッション変数にログイン認証済みという状態とユーザーIDを保持しておけばログイン状態が維持できるというわけです。
基本的にセッションはブラウザが閉じるまで有効になります。
セッションの仕組み
ユーザーのブラウザ側ではセッションIDを持ち、サーバーに保存されているデータをセッションIDをもとに判断する形になります。
なのでセッションIDさえセキュアであれば問題ありませんが、セッションIDを他人が判断できるような値にしないようにだけ注意しましょう。
クッキー
セッションと似ていますが、今度はユーザーのブラウザ側にキーと値を完全に保持します。
例えば一度ブラウザを閉じてもログインし続けたままにするといった機能を実装するにはクッキーを利用する必要があります。
キーも値もユーザーのブラウザに保持する為、メールアドレスやパスワードなどの個人情報を保持するようなことはしないほうが無難です。
さらに何かの値を持つにしても暗号化してもつようにするなど工夫が必要です。クッキーについては不用意に利用しないよう注意が必要です。
まとめ
webアプリにおいてユーザーが入力した値の受け渡し、保持についてはこの3つをおさえておけば大丈夫です。
あとはデータベースもうまく活用すれば、どのようなアイディアも形にすることが可能になるでしょう。
ぜひ素晴らしいアイディアを実現させる方法として採用してみてください。