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