![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
スーパーグローバルで言うところの$_SESSIONと$_COOKIEの違いと理解させていただきます
クッキーはクライアント側(パソコン側)に様々な情報を保存させる
セッションは、サーバー側に様々な情報を保存させる
ここが大きくちがっています
SESSIONはなぜ クッキー機能を使うかということですがNo4さんの仰るとおり、HTTP通信は、1アクセスごとにブチブチと切れてしまい、前後のページとの因果関係を引き継がないからです
セッションIDと呼ばれる値のみをクッキーとして保存させておくのです
クッキーはクライアント側(パソコン側)に全ての値を保存させますからユーザーが改変可能なのです
改変されても問題のない情報ならば良いのですが、例えばユーザーログインを必要とするサイトの場合は改変されたら大変です
例えばメールアドレス+パスワードでログインするシステムでログイン後に Login=TRUE
という値をクッキーに保存させておくシステムがあったらどうなるでしょう
ちょっと知識のある悪意ある人ならば、常にLogin=TRUEというクッキーを用意しておけば、他人のメールアドレスを知っているだけで、そのメールアドレス本人になりすましてログインし放題になりますよね
そういったクライアント側に保存させておきたくない情報をサーバー側で保存する仕組みで、クライアント側には、セッションIDと呼ばれる値のみを保存させておきます
サーバーとクライアント側のやりとりとしては、このセッションIDのみをやりとりしてセッションIDを基にサーバー側に保存させておいたSESSION値を読むわけです
http://search.net-newbie.com/php/ref.session.html
(ここで、「または、URL に埋め込みます」ってありますけど、URLに埋め込むような使い方は好ましくないです
No.5
- 回答日時:
がるです。
すみません追伸をば。#1さんや#2さんがおっしゃってるのは「セッション情報」という、「そのセッションに結びついた情報とかデータとか」のお話になります。
私が書いているセッションというのは「Web サイトを訪れたユーザがサイト内で行なう一連の行動」という行動の単位になります。
例えばこのあたりをご覧いただけると。
http://e-words.jp/w/E382BBE38383E382B7E383A7E383 …
No.4
- 回答日時:
がると申します。
んっと…全体的に色々と整理などしながら。
まず先に。
> セッションはクッキーが有効になってないと使えないと本で覚えました。
多くの場合においてYesですが「必ずCookieが必要か」というと「Cookieを使わないやり方もあります」。
んで。
まずCookieとは、httpという通信方法によって定められた「情報をやり取りするための方法の一つ」になります。
もうちょっと正確に行きますと「サーバ側からの依頼でクライアント側に情報を保存させ、それを受け取ることが出来るメカニズムである」と定義できます。
Cookieは、サーバ側からの「Set-Cookieヘッダ」によって情報がサーバからクライアントに伝達され、保存されます。
また、クライアントからサーバへのアクセス時に、送信すべきCookieを「Cookieヘッダ」によってクライアントからサーバへ伝達します。
という記述からわかるとおり、Cookieは厳密に通信手法の定まっている「実装」になります。
一方で。
HTTPは基本的に「1アクセス毎にぶつぶつと切れてしまう」ものなのですが、そのアクセスを「一人のユーザが一連のものとして」あつかいたいなんてケースが少なからずありまして。
その場合に「セッション」と呼ばれる「概念(私は哲学とか呼称しますねぇ)」を使って「どのユーザさんからのアクセスなのか」を識別したいなぁっていう部分があります。
ただ、セッションそのものはhttpという通信方法での固定的な規約はありません。つまり「やりたいなぁって気持ちはあるけどどうやったらいいかははっきりしていない」状態なんですね。
というわけで。「多くの場合において」、セッションという概念の実装のために、Cookieを用いる「ことが多い」ってのが実状です。
ただ、Cookieではなく、INPUTエレメントのhiddenを用いるなんて方法もあるので、セッションの実装は一概に「これだ」とはいえないのですが。
で。そのセッションの「実装方法によっては」、例えば「有効期限を設定しないCookieを使って」セッションを実装する、なんてぇことが起きるわけですね。
というわけで。CookieはRFCでも明示的に定められている一つの「仕様」であり「実装」ですが、セッションは飽く迄「概念」であり、実装ではありません。
これが最も大きな違いであると言えるかと思います。
技術よりな回答で恐縮ではありますが。
No.3
- 回答日時:
話が色々と混線しているようです。
セッションと言った場合には2つの意味で使い分けられます。
「セッション」と「セッション管理」です。
> セッションはクッキーが有効になってないと使えないと本で覚えました。
そういう制約をかけるケースもあるということでしょう。
> そしてセッションの仕様として「そのウィンドウでのみ有効。閉じたら破棄される」
これは正しいです。アドレスを入力するかボタンをクリックすると画面が送られてきます。
これで1回のセッションは終わりです。次にボタンをクリックすると別のセッションとなります。
次は「セッション管理」の話です。
それでは都合が悪いのでクッキーやその他の方法(メッセージに情報添付)などで
あたかもセッションが連続しているように見せかけています。↓
これによってクッキーの制約を取り除くことが出来るようになります。
参考URL:http://www.scollabo.com/banban/php/php_14.html
No.2
- 回答日時:
感覚的には #1さんの感じですが、全く意味が違います。
クッキーは、クライアント(ユーザ)側にデータを保持しますが、セッションはサーバ側にデータを保持します。
http://www.1kara.net/printable.php?%2Fphp%2Fapp% …
クッキーはクライアント側にデータが保存されるため、改ざんする事が出来ます。また、クッキーに保存されたデータは同じサーバの別アプリからもアクセス出来るのでセキュリティ上問題がある可能性があります。
セッションの場合はクライアント側にはセッションIDのみが保持されるので、詳細情報はサーバ側に保持されるので比較的安全です。当然、セッションIDが盗まれれば同じ事ですが、セッションIDは自動的に予測不可なIDがその都度振られますので、比較的安全と思ってよいです。
時間的に見た場合は、比較的長いスパンで保持したいもの(不連続な接続、例えばログイン名等)はクッキー、時間的には短時間で、その都度変化していくもの(例えばカート内の数量や価格等)はセッション、と言う風な使い分けが出来ると思います。
参考まで。
No.1
- 回答日時:
セッションはクッキーの拡張版です。
クッキー・バージョン2とでもいいましょうか。
クッキーはデータの最大容量が4キロしかなかったり、単純な構造のデータしか保存できなかったりと色々制限がありますが、その制限を取っ払ったのがセッションです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- PHP PHP でメールフォームを作成したい 1 2022/05/04 22:28
- PHP ログインした掲示板ですが、直接開かないような設計するには? 2 2022/10/29 16:30
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- サーバー クッキーをサーバー側で管理することで攻撃に備える 1 2022/08/11 03:49
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- その他(メールソフト・メールサービス) メールアプリ spark にauメールが入れられない!!! 1 2022/08/19 23:51
- Chrome(クローム) クロームで特定のサイトのクッキーをブロックする方法 2 2023/07/14 14:17
- その他(ゲーム) ファイナルファンタジー7リメイクのnormalクリア後のセッションセレクトについて。 セッションを自 2 2023/04/11 16:52
- その他(料理・グルメ) お客さんからもらった手作り菓子を他の客に配ること 2 2022/12/03 00:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
他言語プログラムにて生成され...
-
PerlモジュールのCGI::Session...
-
PHP cookieの値が更新されない...
-
$_SESSION = array() と sessio...
-
セッション ID とセッション名...
-
■(ログイン)セッションの有効期...
-
Sessionの上限について
-
セッション中の1つの変数をuns...
-
【PHP】SESSION変数の競合を...
-
DTOとEntityの差は何ですか。
-
「取得先」という表現について
-
shシェルスクリプト 空白行の...
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
wordの差し込み印刷で文字...
-
ps3で久しぶりにCDの音楽情報取...
-
ローカルのコンピュータ名を取...
-
excel access連携 このテーブル...
-
【C#】DataGridViewの最大列数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
セッション変数にパスワードを...
-
複数のサーバで運営する場合の...
-
ログインしたら他からログイン...
-
ブラウザを閉じた後もセッショ...
-
セッションを維持したまま、サ...
-
session_start()で生成されるセ...
-
PHP SESSION変数を複数使用でき...
-
HTTPヘッダー内での順番などに...
-
session_regenerate_id
-
「ログイン機能を持たせる」説...
-
Sessionの上限について
-
ログイン画面をはさんだ後、自...
-
$_SESSIONと、POSTやGETの違い
-
セッション変数の命名規則
-
初歩的な質問 セッション管理に...
-
複数ページでセッションを使わ...
-
セッション ID とセッション名...
-
二重ログイン管理について
おすすめ情報