🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

7回答

4300閲覧

セッションとクッキー(複数の参考サイトで矛盾する回答)

HHH-

総合スコア28

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

6クリップ

投稿2021/02/15 19:46

編集2021/02/16 00:29

頭がすごく痛いです。。。はっきりとした答えを出さず矛盾を並べるのはもうやめてくれぇえ(;_;)

本題です

セッションとクッキー(Session/Cookie)

「セッションとクッキー」はどちらも同じ機能を持つ。はい、、、
サイトのログイン機能だけなら二つの内、セッションを使えばそれで済みます!

なるほど。。。

クッキーとセッションの違いは?
違う点といえば情報の保存場所と保存期間が挙げられます。

保存場所
・クッキーはクライアント側のマシン(主にブラウザ)にのみ保存され
・セッションはブラウザだけでなく、サーバーにも情報が保存されます。

ここだけを見ると「じゃセッションだけでよくね?」ってなりますが、
ショッピングカートの機能など、セッションだけの力では実現する事ができない物があります。

ほうほう

保存期間
セッションは接続中のユーザーの活動に関連する情報を一時的に保存しているのに対し
クッキーは永続的な保存期間をもちます。

そもそもなんでクッキーやセッションを使うの?

ログアウトしてページを閉じてから戻ってくると
サーバーが以前の状況を覚えていない、、、のでは困るから。

なんで覚えていないの?

HTTPでのクライアントとサーバーのやりとりは
1回のリクエスト&レスポンスで通信が切断終了するから・・・

サイトにアクセスたときクライアントは「画像をください」という指示をリクエストします
クライアント > サーバーに リクエスト。 (開始)

サーバーはクライアントのリクエストに答えて画像をレスポンスする(渡す)
サーバー    >    クライアントに レスポンス。 (終了)

この一回の往復で通信が終わり2度目の通信時にはサーバーはあなたが誰で
1度目のあなたに何を渡したのか
以前の状況を全く覚えていない。

これをステートレス( state less )状態という。
状態を保持(ステートフル)状態にする必要がある。

ここから話がややこしくなります(矛盾します)

ショッピングサイトを作る際はこのセッションと永続クッキーを使います。

なるほど?」

セッションはユーザーがブラウザを閉じるか、サイトを離れると情報が削除されます。一方、クッキーには永続クッキーがあり、情報を保持し続けます。

おお!!?」

クッキーは取得した「誰が?」という情報と、
セッションは取得した「何をしたか?」という情報をあつかいます。

すげーー!」

ショップサイトから離れたり閉じたりしても
ショッピングカートに商品が入ったままになっているのは、
セッションによって情報を保存していたからです。

あれ。。。でもページから離れると情報は消えるん。。。ん?」

はい、、、以下無限ループです。

結局最後は私なりの解釈ですが

クッキーがなくてもショッピングサイトはつくれるのでは?

まずセッションはセッションIDを発行してブラウザーのクッキーに(データファイル)に渡しサーバーには
セッション時に何をしたかという情報が残るのではないでしょうか?

だとしたらログアウト&ページを閉じるなどしても、
もう一度ログインしたときにはちゃんとカートに入れた商品は残っているはずですが・・・?

私の間違えでしょうか。

なにも永続クッキーだのセッションクッキーだのセットクッキーだのをいじらなくても

セッションスタートでセッションIDが発行されたら自動でクライアントのデータファイル(クッキー)に保存されるんじゃないんでしょうか。。。

私の見解があっているかわかりませんが

永続クッキーってのは単にログインをいちいちしなければならない手間を省くためのものではないのでしょうか。

動作はPHPを想定してます。

==追記==
環境はWin10Nginxをサーバーとして動かしています
PHPはCGIです
DBはMariaDBです
すべて最新のバージョンで制作していますが
制作・動作と呼べるようなことはまだ何も出来ていません

コピペでログイン機能を実装してテストしているくらいです

よろしくお願いします!

参考サイト

https://ssaits.jp/promapedia/technology/cookie-session-cache.html#toc_id_3_1

http://www.osssme.com/doc/funto62.html

https://qiita.com/7968/items/ce03feb17c8eaa6e4672#comments

https://kanda-it-school-kensyu.com/php-basic-contents/pb_ch11/pb_1103/

https://www.google.com/search?q=%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E6%9C%9F%E9%99%90&rlz=1C1FQRR_jaJP939JP939&oq=%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E6%9C%9F%E9%99%90&aqs=chrome..69i57.9210j0j7&sourceid=chrome&ie=UTF-8

https://winofsql.jp/VA003334/infoboard_page.php?mid=jsp&id=030211112458

https://www.google.com/search?q=%E3%82%AF%E3%83%83%E3%82%AD%E3%83%BC%E3%81%A8%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%81%95%E3%81%84&rlz=1C1FQRR_jaJP939JP939&oq=%E3%82%AF%E3%83%83%E3%82%AD%E3%83%BC%E3%81%A8%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E9%81%95%E3%81%84&aqs=chrome..69i57.5619j0j7&sourceid=chrome&ie=UTF-8

tomato39👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/15 21:49

>複数の参考サイトで と仰るのでしたらURLを全て提示してください。 個人の記事であれば自己解釈に基づいて書かれている可能性は高く 更に質問者さんの自己解釈が加わってしまえば本質からずれるのは必至です。 >動作はPHPを想定してます。 バージョンによる差異がないとも言い切れません。 マイナーバージョンも含めて「想定のバージョン、環境(PHPを導入するOS含めて)」きちんと記載してください。
HHH-
HHH-

2021/02/16 00:02

環境はWin10Nginxをサーバーとして動かしています PHPはCGIです DBはMariaDBです すべて最新のバージョンで制作していますが 制作・動作と呼べるようなことはまだ何も出来ていません コピペでログイン機能を実装してテストしているくらいです よろしくお願いします!
m.ts10806

2021/02/16 00:10

質問編集して追記してください。こちらは「質問への追記修正依頼」です。
HHH-

2021/02/16 08:18 編集

すみませんでした
guest

回答7

0

疑問に思うのはよくわかる。
session と cookie は、私も理解できるまで時間がかかりました。

session は言語実装のモノやフレームワーク実装のモノなど、文脈で複数の選択肢があるので、少し後回しにして、仕様を調査しやすい cookie から学習すると良いです。

cookie に関して

cookie はブラウザにデータを保存する技術ですが、仕様が決まっています。
入り口は、wikipedia で良いですが、外部リンクとして RFC が紹介されているのでそちらを中心に、実際の挙動を追いかけてみてください。
ブラウザの開発ツールを使用すると、リクエストヘッダとレスポンスヘッダが簡単に覗けるので、便利です。

で、cookie の挙動がある程度理解出来たら、session を調査してみることになりますが、こちらは少しヤッカイです。

session に関して

session は【ステートレスな http に状態管理の仕組みを補完するための機構】を指すため、やってることはほとんど同じですが、実装は複数あります。
理解を難しくしているのは、この session 機構の実装の中で cookie の役割が実装によって違う事があるからです。

ある session の実装では、cookie の値を key-value 型のデータベースの key として使用します。
また、ある実装では、cookie に「暗号化したデータそのもの」を保管します。
さらに別の実装では、cookie を使用せず別の識別情報で session を実現します。

緩い初学者向けの解説では、この辺の複数ある実装を特に説明することもなく session と cookie の関係を説明しているため、サイト間の説明に矛盾が生じます。

個人的には php の言語の持つ session の仕組みが理解できればまずは実践で会話は成立できるようになるのと思うので、その中でも cookie に session ID を保管する仕組みを起点に学習を進めると良いと思います。

結論

。。。質問の答えになってないですね^^;
学習の進め方として読んでください。

投稿2021/02/15 23:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HHH-

2021/02/16 00:09

te2jiさん、ありがとうございます! >質問の答えになってない そなことないですよ!! >学習の進め方として読んでください。 学習以上に読みました! >session の仕組みが理解できればまずは実践で会話は成立できる やっぱりそうですよね(まだやったことないけどそうだと半信半疑思ってた) >緩い初学者向けの解説では、この辺の複数ある実装を特に説明することもなく session と cookie の関係を説明しているため、サイト間の説明に矛盾が生じます。 なるほど ありがとうございました!
guest

0

クッキーがなくてもショッピングサイトはつくれるのでは?

作れますね。
と言うだけだと不親切なので以下のURLの内容も併せてどうぞ。
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_4.html

投稿2021/02/15 23:15

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HHH-

2021/02/16 00:15

hentaimanさん!ありがとうございます! そうですよね それを聞いて安心しました。 URLいただきます。 ありがとうございました><
hentaiman

2021/02/16 03:36

他にもcookieを使わずにセッションを扱う方法(phpの基礎)として以下の内容もどうぞ。 https://www.php.net/manual/ja/session.idpassing.php 他にもそもそもセッション自体を扱わない為のステートレスなど https://www.redhat.com/ja/topics/cloud-native-apps/stateful-vs-stateless と併せてindexeddb(javascript)も知っておくとゆくゆくはweb開発の幅が広がるかもしれませんが、 ※indexeddb調べたら恐らく出てくるであろう他のstorageの情報は無視でOK > 制作・動作と呼べるようなことはまだ何も出来ていません まずは余計な事考えずに作って、その後にセッションを使わない方法に改造していくなどした方が学習出来ると思います。
HHH-

2021/02/16 03:44

ありがとうございます><
guest

0

クッキーがなくてもショッピングサイトはつくれるのでは?

セッション機能を作るためにCookieが必要です。

なにも永続クッキーだのセッションクッキーだのセットクッキーだのをいじらなくても

セッションスタートでセッションIDが発行されたら自動でクライアントのデータファイル(クッキー)に保存されるんじゃないんでしょうか。。。

えっと、クッキーは「使わない」のですか、それとも「使う」のですか?この疑問自体がどこを疑問視しているのかが把握できません。

投稿2021/02/15 22:58

maisumakun

総合スコア145977

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/02/15 23:00

> ここから話がややこしくなります(矛盾します) 「セッション」という単語自体が、いくつかのものと対応しています。おそらく、複数の「セッション」をまぜこぜにした結果、それぞれが矛盾していると感じてしまったのではないでしょうか?
HHH-

2021/02/16 00:20

maisumakunさんありがとうございます そうみたいです(;_;) ただ「セッションとクッキーは一心同体だよ!」と言わんばかりの記事が多く。 なんとなくその辺を疑って調べれば調べるほど、、、って感じで 結局セッション自体は独立でつかってもネットショップみたいなのは全然作れますよってことなのでは? と踏ん切りがつかないままだったのでテラテイルで訪ねたところ だいたいそんな感じですよってことだったので安心しました! ありがとうございます。
maisumakun

2021/02/16 00:29 編集

> だいたいそんな感じですよってことだったので安心しました! 「Cookieを使わずにセッションを使う」といった場合にも2通りがあって、「直接Cookieにアクセスしないだけ」(セッションはCookieを使って作られていることは間違いない)と「セッションの構築にもCookieを利用しない」の両方が考えられます。 ただし、後者の「Cookie以外にセッション情報をもたせる」というのは、セキュリティ上問題が生じるやり方となる、環境に依存してしまうなど適切に動かすには問題が多く、「ブラウザでHTMLを表示させる」というシステムでは、特殊な条件でない限りほぼ選択されません。
HHH-

2021/02/16 01:05

maisumakunさん (;_;)ごめんなさい 質問されていたのにそれに対して返事を返していなかったです。 >えっと、クッキーは「使わない」のですか、それとも「使う」のですか?この疑問自体がどこを疑問視しているのかが把握できません。 んーとPHPでsession_startを使った場合自動的にクッキーを使うことになるので。。。 クッキーをどうこうするというよりは session_startを使った時点でクッキーが使用されるので 結局=使う!ってことになると思います。
HHH-

2021/02/16 01:09

maisumakun >セッションの構築にもCookieを利用しない」ということは = Cookie以外にセッション情報をもたせる」という事なので、セキュリティ上問題が生じるやり方となる。 なるほど!
guest

0

自己解決

皆さんの回答のおかげで問題点を解消することができました。
まとめていきたいと思います。

矛盾ではなく誤解 

  • (1)セッションとクッキーは一緒に使わないとショッピングサイトは作れない!
  • (2)セッションの保存期間はサイト閉じるまでだから、情報は消える!

ここを見て大きな誤解をしていましたが
セッションと一言で言っても、使う場面や言語によっては大きく意味が違ってくるそうです


(1)「セッションとクッキーは一緒に使う」は間違いではないのですが、
セッションを使用した時点でセッションIDが生成され
クッキー(クライアントのブラウザーのデータファイル)に保存されます。

作る物によるが直接クッキーをいじらなくてもセッションを使えばショッピングサイトは作れる。
がわたしの見解になりました。

なので必然的に(2)の
「セッションの保存期間はサイト閉じるまでだから情報は消える」は、

そういう設計にしなければ消えない。
で落ち着きました。


みなさんの回答

m.ts10806さんの回答

  • リストセッション時に何をしたかという情報が残るのではないでしょうか?

残すようにプログラム書いてなければ残りません。なにをどれだけの期間残すか決めるのは設計段階。

  • クッキーがなくてもショッピングサイトはつくれるの?

そういう設計にすれば作れます。ログインしてるかどうか関係なく「今のこのブラウザを操作している人が何を買おうとしているか」をクッキー以外のどこかに持てば良いのです。

上記に対してのmaisumakunさんからの補足。

「Cookie以外にセッション情報を持たせる」というのは、セキュリティや環境依存の問題を考えると、現代のブラウザ環境では実用的な選択肢ではありません。


hentaimanさんの回答

  • クッキーがなくてもショッピングサイトはつくれるの?

作れますね。以下のURLの内容も併せてどうぞ。

https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_4.html

(めちゃくちゃセキュリティの重要性を思い知らされるURLでした。ありがとうございます。)


maisumakunさんの回答

  • クッキーがなくてもショッピングサイトはつくれるの?

セッション機能を作るためにCookieが必要です。

maisumakunさんの補足

「Cookieを使わずにセッションを使う」といった場合にも2通りがあって、「直接Cookieにアクセスしないだけ」(セッションはCookieを使って作られていることは間違いない)と「セッションの構築にもCookieを利用しない」の両方が考えられます。

ただし、後者の「Cookie以外にセッション情報をもたせる」というのは、セキュリティ上問題が生じるやり方となる、環境に依存してしまうなど適切に動かすには問題が多く、「ブラウザでHTMLを表示させる」というシステムでは、特殊な条件でない限りほぼ選択されません。


te2jiさんの回答

session は【ステートレスな http に状態管理の仕組みを補完するための機構】を指すため、やってることはほとんど同じですが、実装は複数あります。

理解を難しくしているのは、この session 機構の実装の中で cookie の役割が実装によって違う事があるからです。

ある session の実装では、cookie の値を key-value 型のデータベースの key として使用します。

また、ある実装では、cookie に「暗号化したデータそのもの」を保管します。
さらに別の実装では、cookie を使用せず別の識別情報で session を実現します。

個人的には php の言語の持つ session の仕組みが理解できればまずは実践で会話は成立できるようになるのと思うので、その中でも cookie に session ID を保管する仕組みを起点に学習を進めると良いと思います。

沢山の参考になる回答をいただきました。

お陰様で、とても有意義な時間で教授できました。
今後もみなさんの回答を生かしていきたいと思います。
ありがとうございました!

投稿2021/02/16 03:27

編集2021/02/17 06:18
HHH-

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/16 03:48

あなたを混乱させたサイト群と同じ間違いをしていますよ。 「どの session 機構」に関して回答を記述したのかが抜けているので、この回答では矛盾と誤解は継続してしまいます。 前提となる session はどの実装を調査したのか、記述しておいてください。 > セッションの保存期間はサイト閉じるまでだから、情報は消えるよ! これは cookie の仕様を調べると良いです。
m.ts10806

2021/02/16 03:55

コメントはそのままコピペで引用してほしい。解釈は自己の行為であって事実とは異なります。
HHH-

2021/02/16 06:07

m.ts10806さん了解です te2jiさん! すこしおしゃってる意味がわからないといいますか、、、 セッションの保存期間はサイト閉じるまでだから、情報は消えるよ!」はたしかに どこかのサイトで明確に述べてるので、それにより誤解したということなのですが。。。 >「どの session 機構」に関して回答を記述したのかが抜けている と >前提となる session はどの実装を調査したのか、 がどこの事を言っているのかわからないです。 どこか間違っているでしょうか。。。?
m.ts10806

2021/02/16 06:08

質問も回答も編集できます。
HHH-

2021/02/16 06:11

あれ、m.ts10806さん! コピペ引用といいますが、、、書かれてる内容は同じなのですが。。。。 どこか抜けてる点があるのでしょうか。。。語尾のことですか?
HHH-

2021/02/16 06:22

te2jiさん! 【ステートレスな http に状態管理の仕組みを補完するための機構】の 「理解を難しくしているのは、この session 機構の実装の中で cookie の役割が実装によって違う事があるからです。」ってところですか?
m.ts10806

2021/02/16 06:26 編集

情報を確実に過不足なく伝えるために淡々と書いています。1文字でも違えば印象がかわり、伝わるものも間違って伝わることがある。 個人的なポリシーもありますが、回答者の多くは口語的な表現は極力おさえています。中には質問や確認の語尾に「?」すら書かない人もいる。 プログラムコードで使う表現を文章で使うのを極力避けたい人もいるでしょう。 プログラムも同じ。1文字でも違えばそれば別の処理。解釈は正しい情報ではないです。 だから、どんな記事を読んでも理解できなかったのだと思います。 もしきちんと理解できていたのなら「自分の解釈を交えた自分でまとめた回答」で解決済みにするなんて出来ないはず。 解釈が悪いとは言わないですが、事実確認はセットです。
HHH-

2021/02/16 07:31

すみませんm.ts10806さん 言いたいことは分かりました! プログラムでは1文字でも違えばそれば別の処理。と言いますが、 プログラムを書く人は数億万人もいます。 彼らが同じものを書くのなら、書く人は1人で十分でしょう。 それにより世界全体に広められたアプリやソフトはどこもかしこも同じものになります。 1文字でも違えばそれば別の処理。それは間違いなのでしょうか? 解釈は正しい情報ではないです。 ではその最初の情報を生み出すために あらゆる手法で物事を考え解釈して情報にした人、は間違っているはずです。 だとしたらそれらを参考にして開発されたアプリやソフトは間違いだらけでしょう。 冗談です 実際間違いだらけです。どのソフトもバグりますしね。 これに関してはm.ts10806さん言うことが正しいです しかし一方で1文字ですべてが崩壊するのなら、 そもそもプログラムは成り立たない。 コーディングには様々な書き方をする人がいます。中には 「普通こんなところに書き込まないんだけど!?これ誰か書いたの?おかしくない?」 て言いたくなるようなところにめっちゃ書いてあることもあります。 しかし彼のプログラムは正常に動きます。 (時代と共に、昔はこんな書き方じゃなかった!」は「今は」「これからは」。。。という具合でどんどん形を変えて改良されていきます) 形は様々ですが、大げさでない限りある程度許される許容範囲が存在します。 ですが、情報はプログラムと同様に繊細な物だと私は自負しています。 今すぐ編集します。
m.ts10806

2021/02/16 07:43

意図が全く理解されてない駄文で、読む気が起きないので端的に。 1字違うと動かないの例。PHP。 echo "Hello"; これでも「しかし一方で1文字ですべてが崩壊するのなら、そもそもプログラムは成り立たない。」なんて言えますか? あまりずれたままの会話したくないので、以上で。
HHH-

2021/02/16 07:48

1文字でも違えばそれば別の処理。 「echo」はそもそも処理ができないです。。。
HHH-

2021/02/16 07:53

m.ts10806さん。。。 1文字でも違えばそれば別の処理。(処理ができるってあなたが言ってるんですよ、、、、?)
maisumakun

2021/02/16 07:55

> 1文字でも違えばそれば別の処理。(処理ができるってあなたが言ってるんですよ、、、、?) 「処理ができない」のも立派な「別の処理」です。「別の処理」に「処理ができる」ことは含意されません。
m.ts10806

2021/02/16 08:04 編集

実行結果エラーが出る。処理の結果ですね。 しかし、1文字ですべてが崩壊する簡易な例です。 「処理ができる」はあくまで作る側の勝手な都合であって、プログラム側は書いたとおりに動いた結果を返しました。 で、本来やるべきことと1字違うことで意図した結果を返さないようになった。簡単にすべてを崩壊させました。
HHH-

2021/02/16 08:04

ですが絶対に「処理ができない」ことも含意されません。 それにそこは重要ではなく要は、極端な話を私がしていて 誤解を招いているということを指摘されましたが 情報に大きな改善はしていないですよ。という返しをしているんです。 「echo」ではなく 「 echo "Hell o"; 」くらいに捉えてねって感じです
HHH-

2021/02/16 08:04

それじゃダメなのでしょうか。。。
maisumakun

2021/02/16 08:06 編集

> 情報に大きな改善はしていないですよ。という返しをしているんです。 改善でなければ改悪ですね。駄目です。
HHH-

2021/02/16 08:06

はい分かりました。いずれにせよ言われた通りに編集しておきました。 大丈夫でしょうか?
HHH-

2021/02/16 08:08

te2jiさんからの返答がまだですが。 maisumakunさん m.ts10806さん ありがとうございました。 それと失礼しました。
HHH-

2021/02/16 08:11

削除依頼しておきますか?
m.ts10806

2021/02/16 08:19

えーと。私が「1字違うことで」の話で説こうとしているのになぜあなたの解釈で押し進めようとするのか全く理解できません。 echo "Hell o"; ↑これについても要件が「"Hello" と出力すること」なら、立派な不具合です。
HHH-

2021/02/16 08:24

m.ts10806さんw もう大丈夫です ごめんなさい 削除依頼を提出しました。 投稿に問題があると判断されればこのページは消えます。 規定通りあとは運営の判断にまかせてください。
m.ts10806

2021/02/16 08:34

回答もこんなについて解決済みにしておいて削除依頼というのも勘弁してもらいたいでしょうね。 見ている人には自己勝手解釈がすぎる上に無責任な印象がついたと思います。
HHH-

2021/02/16 08:38

だいぶ前に未解決に戻してあります。。。 te2jiが最初に指摘してくれた人なんですけど。 その人がコメントした時からだいぶ立ちます。。。
HHH-

2021/02/16 08:44

あのどうしたいんでしょうか。。。 m.ts10806さんの言うとりに修正し 未解決にした上にm.ts10806さんが正しいということで 謝罪も入れ、それでもmaisumakunさんに >改善でなければ改悪ですね。駄目です。 と言われ投稿に問題があるというところに到達した上で 規約通り投稿の削除依頼を提出し、、、 そのうえ自分勝手というレッテルを貼られる。 はぁ、、そうですか。。。 一応 m.ts10806さん 「あまりずれたままの会話したくないので、以上で。」 って切り上げたにも関わらず戻ってきて言いたい放題じゃないです?
hentaiman

2021/02/16 08:46

どう理解してどういう方針で実装を進めようと思ったのかは分からないけれど、何も実装をしていない状態では高評価がつけられている皆の回答の理解が進まないはずです。 自分の回答のコメントにも書いたけど、細かい事気にしないで良いからとりあえず実装してみてはどうですか?
m.ts10806

2021/02/16 09:05 編集

これだけの人を巻き込んでおいて削除しようとし、これだけズレを指摘されていて一切なおそうとしない(現在進行系)姿勢を自分勝手以外なんとお呼びすればよろしいか?段々迷惑行為に近くなってきてるので仕方なく指摘を続けています。 わたしのことを正しいと言えともベストアンサーに選べと言ったつもりもないのにまたズレたまま。 どこを確認して「規約通り」と豪語しているのか不明ですが、「投稿の削除ポリシー」には沿っていません。また、勝手解釈しているのに気づきませんか。 こんなことしてる暇があったらゴミプロ組んでエラーとか思うように動かなくて悩んでる方が何百倍も今回得られた回答も活かせるし自身のためになりますよ。 私も他の人もそのように書いてます。御託はいいからまず組め、と。
HHH-

2021/02/16 18:30 編集

御託。。。そもそも組んでます、、やってます 決め付けないでください。 追記 m.ts10806さんmaisumakunさん いま気がついたんですけど、お二人さん ユーザーランキングが月間と総合で1位なんですね だから結託気味だったんですね。。。おかしいと思いましたよw 妙に肩を持つような言い回しをしてると思ったら、なるほどね。 誹謗中傷されるような事を言った覚えがないのに結構ヘイトがくると思ったら。 気持ち悪いですね。 ランカーにしてはやってること低いですね。 あれかな長年テラテイルを使ってると 規則上に無い暗黙のルールってのがあるのかな? 「?」つけるな、とかコピペしろ!とか そっかそれはランカーに意見したらこうなりますね、 ランカー様!勉強になりました。 ありがとうございました!
m.ts10806

2021/02/16 11:42

>御託。。。そもそも組んでます、、やってます 決め付けないでください。 この質問内容でどこに「組んでいる」コードがあるんでしょうか。 プログラムは書いたとおりにしか動かない。 質問は書いたとおりにしか伝わらない。 「決めつけるな」と言いたいなら、「やったこと」を明示してください。 「コピペでログイン機能を実装してテストしているくらい」という言葉で見えることは何もなし。 >「?」つけるな 言ってない。「「?」すら書かない人もいる」 がどこがどうねじ曲がった。 >コピペしろ! 「しろ」とは言っていない。 が、コピペするのは当たり前の話。 赤の他人をあなた専用の先生とか友人とでも思ってる? リアルでの顔見知りがいる人の方が少ないのでは。 >だから結託気味だったんですね 意味不明。根拠なし。また自分勝手な解釈ですか。 > 誹謗中傷されるような事を言った覚えがないのに結構ヘイトがくると思ったら。 きしょいですね。 自分勝手な解釈を押し通すだけでなく、「きしょい」と暴言吐かれてますので通報しました。 指摘し続けているのは勝手な解釈を押し通す迷惑者だから。 もう「ズレ」ってレベルじゃない。妄言にも程がある。 「事実」は「話をまともに聞かずに自分勝手な解釈で持論を展開する人がいる」という点くらいでしょうね。 teratail内での順位に大した意味はない。
HHH-

2021/02/16 18:45 編集

だいぶ立つけど、まだ言ってるし。 熱くなりすぎじゃない?
HHH-

2021/02/16 18:28

>リアルでの顔見知りがいる人の方が少ないのでは。 しかも全然関係ないね 「「?」すら書かない人もいる」っていって押し付けてきてるじゃん。 「?」つけるな」となにが違うの?
HHH-

2021/02/16 23:05 編集

きしょいって暴言なの? じゃ「気持ち悪いと思った」って言い換えとくね。 ちなみに「解釈だ解釈だ!」って繰り返してるけど 「解釈が悪いとは言わない」とか言ってたのにも関わらずこれだからね、 解釈って単語にとらわれすぎじゃないです?それしか言えないのでしょうか。 それに対して「許容範囲があるよね」ということも提示した上で 「それはよくない」と多数決で二人に指摘され、私が謝罪をいれて身を引いたにも関わらず 「話は終わってないぞ」とまた掘り返してきたのはあなたじゃありませんか? なんでそこで終わりにできないんですか? しかも要求を聞いた上で投稿の修正までしたにも関わらず。 挙句の果てには「知り合いが少ないのでは?」とか。 (勝手な解釈をしているのはあなたも同じでは?よく人のことを言えますよね?) 全く関係のない個人的な話に持ち込んでますけど論点がずれてるのあなたも同じですからね? 切り上げるタイミングが数回あったにも関わらず不必要に(必要以上にとでもいいましょうか) コメントを返しに来てますし内容もほぼ誹謗じゃないけど中傷にあたる話し方をしていますよね。 周りに迷惑とか自分勝手とか言ってますけどこの話。 あなた以外だれも気にしていませんよ、大丈夫ですか? (仮空の第三者からの注目を気にしてるのでしょうか?) 私のここでの役割は質問した内容が解決するために回答をまとめることなんですよ。 (それも他人のためではなくて自己のために質問してまとめてるのでここで第三者は関係ないですし、 仮に百歩譲って第三者が関係してるとして、 この質問で得た答え「まとめ?」情報を参考にするかしないかはその第三者次第です。 それにあなたに言われたとおり投稿を修正もした上での以降の今の話は第三者に何ら迷惑をかけませんし全く関係ないです。) わかります?「個人のリアルでの話は第三者が求めてる情報じゃないんですよ。」 この一言であなたにも伝わりますか? まとめ終えた今あとは研究に没頭するだけなので、この話はそこで終わってるんですよ。 ちょっと意見されたからって言いすぎなのは認めなね? 少なくても回答者の回答の情報を偽造でも改善でも改悪もしていないのですが、 それに対して改悪だのと言われ 2度目の謝罪訂正詫びを入れましたがやはりレスが止まらない。。。 これでどっちが害悪なのかわかりますか? 初手の回答の内容の「語尾(重要でもなければ矛盾も生まない単語、情報に欠かせない単語ではない物)」 もっと詳しく書きましょうか? 「敬語とか敬語じゃわからないか、尊敬語、丁寧語、謙譲語の内の 丁寧語に当たる語尾」ですら大幅な改善として扱われてたら そもそも情報という概念するら存在しえないし、 今こうしてあなたとも話していなければ質問すらしていないですね。 あなたがレスしてくるたびに時間を割かれて迷惑しているのは私の方です で何度も言いますが言われた通りに修正しました。<普通ここで終わるのよ?わかる?
HHH-

2021/02/16 18:43 編集

>意味不明。根拠なし。また自分勝手な解釈ですか。 根拠は上げたやろ?w見える?ランカー(共通点)を提示しましたが? なのちなみに切り上げるって言ってからも コメしに来てるじゃないですか。 しかもあなたが私に対して「御託ならべる暇があったら さっさと実装しろ」とか言いませんでした? でなぜにコメ返しに来てるんですか?暇なんですか? それで正しいと思ってるなら別にそれで終わりでいいじゃないですか。 結局わざわざコメ返しに来てるのってずぼしつかれたからなんじゃないんですか? そういうのやめな?
Zuishin

2021/02/17 03:22

「セッション」という言葉には色んな意味があって、文脈によって違うんですよ。たとえば HTTP で言うセッションとは、接続から切断までのサーバー・クライエント間の一連のやり取りのことを言います。一方あなたの調べたセッションは、多くが「フレームワークの提供するセッション機能」のことだろうと思います。 フレームワークは一種類ではないので、この場合、一つのセッションがどこで始まってどこで終わるかは、その機能を提供するフレームワークによって違います。たとえばログインからログアウトまでをセッションとするもの、ログアウトまでに切断があればそこまでをセッションとするものなどが考えられますね。 そしてセッション中は同じデータを使える方が利便性が高いので、フレームワークはその仕組みを提供します。その仕組みを提供する実装の方法は様々ですが、cookie をバックボーンとして利用するのが最も実用的と言えると思います。cookie の中にデータを直接放り込むこともあるでしょうし、セッション ID というものを作ってサーバー側でデータを持ち、cookie にはその ID を保存してそこからサーバー側のデータを特定することもあるでしょう。 一方、PHP は言語レベルでセッションに対応しています。これも裏で cookie を使って実装したものです。フレームワークはそれを使うこともできるし、独自のセッションを提供することもできます。独自のセッションの中にはセッションという枠に収まらない概念を含んだものもあるかもしれません。またフレームワークではなくウェブアプリケーションが独自のセッション機能を持つこともあります。 このように、同じ「セッション」という言葉が文脈によって様々なものを指すので、これらをひとくくりにしたのでは理解できませんし、cookie と対比するのはナンセンスです。 そこでこのベストアンサーとまとめの回答を読むと、どうもよくわかっていないまま質問を閉じたように見えます。それへの懸念が te2ji さんの > あなたを混乱させたサイト群と同じ間違いをしていますよ。 という言葉であったり、m.ts10806 さんの > 解釈が悪いとは言わないですが、事実確認はセットです。 という言葉であったり、maisumakun さんの > 改善でなければ改悪ですね。駄目です。 という言葉に表れているのではないかと思います。どれも意地悪から出た言葉ではなく「もっとよく読んで欲しい」という気持ちから出たものではないでしょうか。 途中からおかしなことにはなっていますが。
hentaiman

2021/02/17 03:45 編集

おお、ベストアンサーが自分の回答に変わってる 質問に対して自分の回答が不足しているとは思ってないけど、とりあえず自分以外をベストアンサーにしといてください、手間かけますが。
m.ts10806

2021/02/17 04:09 編集

終わる気なくて、煽ってるだけですね。 本件、理解する気がなさそうなのと、おおよそ理解には遠いところにいるのが分かりました。 Zuishinさんが代弁してくれたところもあるので、あとは運営に対処を委ねます。9割超個人的な感情で書かれてるのは間違いないので。 感情じゃプログラムは動きませんよ。解釈じゃプログラムは動きませんよ。1つでも間違えばただのバグですよ。ご自身のまとめやコメントがおおよそ許容し難いバグだらけであることを認識できたら、正しく理解できるようになりますし生かせるし頭が痛いのもなおりますよ、きっと。
HHH-

2021/02/17 04:16 編集

Zuishinさん なるほど納得です あなたの有益な情報で私は救われます。 te2jiさんにも指摘され、それらを見直すことができました。 ほかにも抜けている点がありましたらご指摘願います。 hentaimanさん hentaimanさんにベストアンサーを投げた理由は シンプルで行き過ぎた回答でもなくその後も引き続き補足で情報を提供してくれたからです。 個人的には今コメントで指摘してくれたZuishinさんも含め te2jiさんやm.ts10806さん、maisumakunさんとhentaimanさんも その他回答してくださったみなさんの回答内容に納得をしています。 全員ベストアンサーです hentaimanのご指摘を受けたのでベストアンサーは保留にします。
HHH-

2021/02/17 04:44 編集

独り言ですが 私はロボットじゃありません。 私は一時の好奇心でプログラミングをしているわけでもありません。 目的のものを作るために心の底から溢れ出る情熱と感情でプログラミングを学んでいます。 私がここまで来るのに沢山の人達からの応援や回答をいただきました。 様々な解釈で答えを見つけて今ウエブ上のデザインを手がけることができています。 ウエブ制作をすることができています。 私を動かすのは自尊心なんかじゃありません。信念です。 (追記) もちろん失敗はあります。 私にとってはそれも経験です、 その経験のおかげもあってか自立できています。 生まれた時から100%完璧にできてたことは何一つありません。 m.ts10806さんあなたに私の何が分かるのですか あなたは私の分も生きているのでしょうか? 私の目線で私のこれまでを見たというのですか? 勝手に私を語らないで。勝手にあなたのものさしで図らないで。
HHH-

2021/02/17 05:09

Zuishinさんの補足すごくわかりやすいんですけど これも「まとめ」の欄に書き込んだら怒られますか? まとめたい。。。
Zuishin

2021/02/17 05:18

怒りまではしませんが、こんなソースも不明なものを何の裏も取らず信じてはいけません。PHP のセッション、Laravel のセッション、FuelPHP のセッション、Django のセッション、ASP.NET のセッション、Blazor のセッションなどを個別に調べ、それをまとめてください。
HHH-

2021/02/17 05:19

やってみます
hentaiman

2021/02/17 05:21

回答に書くんじゃなくてお手元の端末とか紙に書き下ろしてまとめ、それらを要約したものを回答に記載して自己解決にでもしといてください
Munosuke222

2021/02/17 05:30

勝手に私を語らないで、と言いながら勝手に他人様の文言を自分の言葉で書いちゃうんですね。ブーメランすごい勢いで突き刺さってますよ。
HHH-

2021/02/17 06:04

hentaimanさん (1)セッションとクッキーは一緒に使わないとショッピングサイトは作れない? (2)セッションの保存期間はサイト閉じるまでだから、情報は消える? の1と2の疑問点で セッションでもつくれる(厳密に言えばセッションでIDをクッキーに保存される)ということが わかっただけでも大きな収穫なので解決にしたいと思います。 セッションの情報機関についてはまだ不明ですが >期間を設定して保存ができる というのは間違いなさそうなので 現状得た回答などで 「セッションでクッキーにIDをパスしてセッション中の情報を期限設定等の設計で実装はできる!」 という結論に至ったのでこれを自己解決にします。 Zuishinさんの補足やそのほかの回答を元に また別枠で実装できたがその良し悪しを投稿していきたいと思います。
hentaiman

2021/02/17 06:20

> 厳密に言えばセッションでIDをクッキーに保存される そうか・・・、自分の回答とコメントとそれぞれに貼ったURLを見直してください
HHH-

2021/02/17 06:23

>自分の回答とコメントとそれぞれに貼ったURLを見直してください 参考にさせていただきます
guest

0

いちおう具体例を提示しておきます。

・/cart/?sessionid=xxxxx と GET パラメータで引き回す。
→ ショルダーハックされる。ログに sessionid が残ってしまう。
HTML 保存されると再ログインできる。全リンクにパラメータを
つけるのがめんどう。
<form aciont="/cart/" method=post><input type=hidden name="sessionid" value="xxxxx"> と hidden で引き回す。
→ HTML 保存されると再ログインできる。全リンクにパラメータを
つけるのがめんどう。
・flash アプリに保存
→ できるのかな? よくわかりません
・Web Storage に保存
→ cookie 的なものなので、cookie にできることはなんでもできる。

また、セッション情報も別にいらないといえばいらないですよ。
あらゆるところに ID・Password・カート内容を GET なり hidden なりで
引き回せばいいわけです。

投稿2021/02/16 01:48

68user

総合スコア2022

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

セッション時に何をしたかという情報が残るのではないでしょうか?

残すようにプログラム書いてなければ残りません。なにをどれだけの期間残すか決めるのは設計段階。

クッキーがなくてもショッピングサイトはつくれるのでは?

そういう設計にすれば作れます。
ログインしてるかどうか関係なく「今のこのブラウザを操作している人が何を買おうとしているか」をクッキー以外のどこかに持てば良いのです。
実装の煩雑さ等の観点はさておき。

まあそこは小規模でも良いので自ら設計、実装、運用してみるのが一番理解に繋がります。

投稿2021/02/15 23:40

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HHH-

2021/02/16 00:14

m.ts10806 さん ありがとうございます! >残すようにプログラム書いてなければ残りません。 そういうことですよね! >「何かを」クッキー以外のどこかに持てば良いのです。 それを聞いて安心しました。 てっきり最初検索に「セッション」とだけ書くとまるで 「セッションとクッキーはセットだよ!一緒に使わないとだめだぞ!」って捉え方をさせられるような文面ばかりだったので困惑してしまし。 調べに調べれば調べるほど。。。不可解な矛盾が出てくるのでテラテイルで思い切って訪ねてみました。 本当にありがとうございました!
maisumakun

2021/02/16 00:28

> 「セッションとクッキーはセットだよ!一緒に使わないとだめだぞ!」って捉え方をさせられるような文面ばかりだったので困惑してしまし。 「Cookie以外にセッション情報を持たせる」というのは、セキュリティや環境依存の問題を考えると、現代のブラウザ環境では実用的な選択肢ではありません。
m.ts10806

2021/02/16 00:40

maisumakunさん 補足ありがとうございます。 「実装の煩雑さ等」に込めたつもりでしたがハッキリと「セキュリティの」と書いておいたほうが良かったですね。 この回答で伝えたいのは「できるか出来ないかだと大抵のことはできる。それがルール含めて好ましいかは別」ということです。 極端で分かりやすい例だと、自動車の逆走や無免許運転。能力的には可能でも法律的にはNGです。
HHH-

2021/02/16 00:41

>セキュリティや環境依存の問題を考えると、現代のブラウザ環境では実用的な選択肢ではありません。 なるほどやっぱり安全性ではクッキー仕様なのですね わたしも調べた限りではそういうことだったんですが、 一方で「PHPなら安全」視する意見がありますが、そのへんはどうなんでしょう。 まぁもちろん100%安全ではないと思いますけど 問題点をPHPはカバーできているのでしたらPHPでセッションIDを発行させて〜。。。 クッキーに情報を渡すか、「Cookie以外にセッション情報を持たせる」かを考えている段階です。 実行はもう少しみなさんの意見を聞いてから考えてみます。
m.ts10806

2021/02/16 00:45

>一方で「PHPなら安全」視する意見がありますが 出典を明示して話しましょう。 ただ、安全かどうかは設計や実装によるので言語やフレームワークの選択は安全性の担保とは一致しません。 フレームワーク選択しても規則を無視した実装だってやろうと思えばできるわけです。 むしろ、利用者が多く、スパゲティコードになりやすい側面があることで、標的の的となりやすいとも言えます。 分母が大きいということは、そのぶん、分子の数も増えるわけですから。
HHH-

2021/02/16 00:54

なるほど、、どういう言語を利用するかとかあまり関係なく クッキーを使う使わないで安全性がかなりかわってくる、、、っぽい。 ありがとうございます なんかちょっと考えが変わりました。 作れるか作れないかにこだわっていましたが、 そうですよね作れるには作れるけど安全性を無視した設計になるのはちょっと。。。 安全性をもっと重視した方法で設計していきたいですね とりあえずは作ってみて実際に動作させてこの身で安全性や動作上の問題を体感して行きたいと思います!
m.ts10806

2021/02/16 01:01

言語やフレームワークはあくまで道具です。実現のための手段に過ぎません。言語特性は考慮すべきですが、やろうと思えば大抵の言語で同じことが実現できます。
guest

0

サーバーで発行されたsession変数がブラウザのcookieに保存される、と理解しています。
私も初心者なので理解不足ですが・・・。

投稿2021/02/15 21:50

anyme

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/15 22:06 編集

なるべく、その理解に至った根拠となる資料は提示視されたほうが良いです。 (質問者も回答者も自己解釈というじたいはよろしくない)
HHH-

2021/02/16 01:00

m.ts10806さん!あなたのアドバイスは心に響く物があります!ありがたい! anymeさん! >サーバーで発行されたsession変数がブラウザのcookieに保存される、と理解しています。 わたしもそう理解しました。 共感できる人がここにいて嬉しいです!頑張ってください。
Y.H.

2021/02/16 03:53

> サーバーで発行されたsession変数がブラウザのcookieに保存される サーバー管理(保存)しているsessionを識別するためのsession idがブラウザのcookieに保存される です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問