トップページ⇒php
822コメント255KB

【PHP】セッションについて語ろう!【PHP】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/09/24 19:31ID:SnRvXmpI
ブラウザを閉じたらセッションの効果がなくなるのって、
ブラウザを閉じることでクッキーを消しているからなのですね。。
知らなかったよーーーーうわーーーん
0412nobodyさん2006/05/29(月) 19:47:17ID:???
↑
ごめ、>>402じゃなくて>>405へのレス。
0413nobodyさん2006/05/29(月) 21:43:17ID:???
今、自分mixiのクッキーを調べてみた。
「自動ログイン」のチェック無しでログインすると
「BF_SETTING」って項目とデータ7行。

「自動ログインあり」だと、「BF_SETTING」に加えて、
「BF_SESSION」と「BF_STAMP」ってのが追加されるみたいだね。
0414nobodyさん2006/05/29(月) 23:14:23ID:???
>>411
チェック外しても昔送ったクッキーを生かしたままにしてあるとか?
0415nobodyさん2006/05/29(月) 23:26:21ID:???
>>414
少なくとも、ログイン画面を見ているときはクッキーが切れてる。
0416nobodyさん2006/05/30(火) 01:55:58ID:???
>>414
どうやって生かしたままにするの??
0417nobodyさん2006/05/30(火) 08:23:17ID:???
むしろログアウト判定のクッキー喰わせてる訳か。ダサイ設計だ。
ログアウトしてるのに、クッキー消したら認証突破できるんじゃね?
0418nobodyさん2006/05/30(火) 09:43:25ID:???
>>417
ん? 何を見当違いのこと言ってんだ?
「ログアウト判定のクッキー喰わせてる」って、何を根拠に言ってんだか・・・
0419nobodyさん2006/05/30(火) 10:56:22ID:???
>>417
ログアウトは、有効期限切れのクッキーを送ってる。
つまり、クッキーを削除するのに通常使われる方法だぞ。
0420nobodyさん2006/05/30(火) 19:30:57ID:???
>>419
だよね。
0421nobodyさん2006/05/30(火) 20:39:32ID:???
D A Y O N E
0422nobodyさん2006/05/30(火) 22:36:56ID:???
SO YA NA
0423nobodyさん2006/05/31(水) 12:02:25ID:???
DA YO NA
0424nobodyさん2006/05/31(水) 12:57:55ID:???
O YO NE
0425nobodyさん2006/05/31(水) 14:17:24ID:???
O YO YO
0426nobodyさん2006/05/31(水) 15:24:58ID:???
「だよねー」はねーよ だ!
0427nobodyさん2006/05/31(水) 16:23:12ID:???
バーローwwwwwwwwwwww
0428nobodyさん2006/05/31(水) 22:07:23ID:???
    _, ._
  ( ・ω・)  
  ○={=}〇,
   |:::::::::\, ', ´
.wwし w`(.@)wwww
0429nobodyさん2006/07/01(土) 04:01:59ID:???
あるwebアプリの開発を引き継いでるんだけど、検索結果とか一覧で同じ表示形式(ページングとカラムごとのソート機能付き)を共通で使いたい。
なおかつ、結果と、ソート状態、何ページ目は、他のページを開いても戻って来た時保持したい。
いちいちGETやPOSTからsqlクエリを毎度生成するのはめんどくさ過ぎるから、
検索条件が投げられた時点でsql文をつくって、まるごとセッションにぶち込む。URLにGETに含めるのは現在何ページ目、ソート対象、ソート方向、表示件数だけにしてしおうかと思ってるけど、こういうのはありなのかな?
0430nobodyさん2006/07/01(土) 08:44:44ID:???
>>429
2枚ウインドウを開いて違う検索しようとしたら、一方の検索条件が両方に適用されて
まともに使えないサイトがあった。
ウインドウ毎に区別されるようにしてね
0431nobodyさん2006/07/01(土) 10:15:18ID:???
>>430
暫く前の@type(転職サイト)がそう。最悪の使い心地だった。
今は他社同種のと同程度には改良されてるけど。
0432nobodyさん2006/07/01(土) 16:27:38ID:???
>>430-431
なるほど。そういう弊害もあるのか。
いい事聞いた。ありがと。
やはり自分で想定できることってかぎられてるんだなと。
だったら新たに窓を開いたら窓ごとに別のセッションネームをつけてsql文を格納すればよさそうですね。
表示部分の関数がsql文をわたす設計で、結果からのリンクはすべてget渡しなんで、関数内でsql文を生成するとおそろしく面倒なことになりそうだ。
04334322006/07/04(火) 11:39:42ID:???
使い回ししやすいように関数化して、ダブらないように独自のセッションネームを吐くようにしてるけど、けっこう苦戦中。
でもこれが完成したらすげー楽になるかも。
0434nobodyさん2006/07/04(火) 19:13:45ID:???
ガンガレ
04354322006/07/04(火) 22:41:35ID:???
だめだ。検索掛けるときにgetで投げるときもあれば、postでやるときもあるし、selectのonchangeつかって同時にget投げるときもある。
全ての入力を統合するのは、やっぱり無理っぽいかも。もう限界に近づいて来たというのに、ひどい状態になってしまったorz
コメントアウトだらけで自分でもわけわからん、
0436nobodyさん2006/07/05(水) 03:10:54ID:???
一方ロシアはSQLをその都度生成していた
0437nobodyさん2006/07/05(水) 08:45:55ID:???
おそロシア
0438nobodyさん2006/07/11(火) 09:18:37ID:3lRF8+ba
会員制サイトのログイン状態の保持にセッションを使ってるのですが
アイドル状態が続くとセッションが切れてしまうのを
回避する方法を考えています。

・ サーバでのセッション保持期間を長くする
・ セッションでなくクッキーなどによる管理に変更する

これ以外になにかいい方法があったら教えてください
0439nobodyさん2006/07/11(火) 09:21:58ID:???
>>438
普通に考えたらクッキーだよな。

面白い方法だと、例えば幅無しのフレーム作って、そっちのフレームの中を<META>タグで
何秒か置きに更新させて、その中でセッションを更新させてやるとか。
↑まぁこんな事やる意味が分からないけどね(w
04404382006/07/11(火) 13:01:04ID:???
>>439
フレームはちょっと考えてました。
あとはFlashとかで定期的に通信するとか。
でも最後の手段と考えてます。

クッキーの場合は、パスワードも暗号化したクッキーとして
クライアントに返して
毎回そのクッキーで認証するって感じでしょうか?
0441nobodyさん2006/07/11(火) 14:00:39ID:???
>>440
「毎回」の意味が不明だけど。
認証に通ったらワンタイムパスワードを発行。
0442nobodyさん2006/07/11(火) 14:59:31ID:???
セッション保持はメモり喰うし、メモリリークが発生しやすい。
クッキーやワンタイムパスワードは総当たり攻撃で突破される。

そもそもHTTPなんてステートレスなプロトコルでセッションが切れるのは仕様。
SOAPとかCORBAとか他のプロトコル使ったら?
0443nobodyさん2006/07/12(水) 02:04:51ID:???
>>438
>アイドル状態が続くとセッションが切れてしまう

session.cookie_lifetimeが「0」なら、
ブラウザを閉じない限りセッションも切れないだろ。
しかもそれってデフォルト設定だし。
0444nobodyさん2006/07/12(水) 10:11:09ID:???
>>443
サーバ側は削除されるだろ?
0445nobodyさん2006/07/12(水) 13:24:04ID:???
>>444
削除されないよ。
実際自分のとこで動かしてるスクリプトは、
一度ログインしたらブラウザ閉じるまで何日でもログイン状態(=セッション)続いてるし。
0446nobodyさん2006/07/12(水) 13:41:31ID:???
ブラウザがセッション切る場合もあるし、間に入ったNATやプロクシが切る場合も有る。

何日もログインできるってメモリリークしまくりに気づいてないだけじゃ?
0447nobodyさん2006/07/12(水) 15:45:38ID:???
>>446
お前が>>442で書いてることは間違い。
セッションはファイル(またはDB)で管理されるものであり、
メモリとは直接関係ない。したがってメモリリークなど起きない。

悔しかったら具体的にどういう根拠でメモリリークが発生するか書いてみたまえw
0448nobodyさん2006/07/12(水) 23:04:56ID:???
>>445
他にアクセスがなければ削除されないでしょ

自分しか使わないシステム?
0449nobodyさん2006/07/13(木) 09:31:31ID:???
PHPのデフォのセッションの場合、
セッション管理はセッションIDをベースファイルネームにしたファイルベースで行われてて、
セッションIDに対応したファイルがあるかないかだけの話だと思うのだけど、
そこに一体どういう原理でメモリリークが発生するの????
0450nobodyさん2006/07/13(木) 13:03:32ID:???
>>448
ガーベッジコレクションの動作についてよく勉強したまえ。
gcは、「ガーベッジ」となっていないものまでは回収しない。
0451nobodyさん2006/07/13(木) 13:36:25ID:???
>>442
>セッション保持はメモり喰うし、メモリリークが発生しやすい

アタマ大丈夫??
0452あい2006/07/13(木) 15:17:21ID:se0YFGaK
sessionについて教えてください!
0453nobodyさん2006/07/13(木) 19:25:58ID:???
総当たり攻撃で突破できる弱いユーザ管理です。

ファイルでもDBでもセッションが多数に成ればその分だけメモリの使用量が増えて、解放されないメモリが増えるよ。
事実上メモりリークしてメモリの再活用や再割当が出来なくなる。回収しないのではなくて回収できないメモリが増えていくのがメモリリーク。
0454nobodyさん2006/07/13(木) 20:38:13ID:???
セッションの保持にメモリが使用されるのはコンパイルオプション付けたときだけだろ。
メモリを使用したときでも、きちんと解放がセッション保持のプロセスに含まれてるしメモリリークするとは考えられないが。
0455nobodyさん2006/07/13(木) 22:45:45ID:???
>>453
>ファイルでもDBでもセッションが多数に成ればその分だけメモリの使用量が増えて

↑こいつキチガイだなwww

なんでセッションファイルの数が多いとメモリ使用量が増えるんだよw
そしたらセッション以外にもスクリプト自身とか、さまざまファイルが
多ければ多いほどメモリリークが発生する…って理屈になるなww
0456nobodyさん2006/07/14(金) 10:42:22ID:???
ファイルハンドルでメモリ喰うから。プログラムやったこと無いの?
0457nobodyさん2006/07/14(金) 11:06:20ID:???
>>456
だから食わねぇっつーの。
そんなに自説を主張したかったらソース出せソースを。
誰がどこでそんな珍説を広めてんだ?
0458nobodyさん2006/07/14(金) 11:42:37ID:???
>>456はおそらく、C言語を中途半端にかじったヤツである悪寒。

で、PHPの自動メモリ解放機能とかを知らずに、
最近覚えた「メモリリーク」という言葉を連呼したくてたまらない厨房なのでは??

まあ、何にせよセッション・ファイルとメモリリークとは関係ない話なんだけどね。
0459nobodyさん2006/07/14(金) 16:28:29ID:???
馬鹿だなあ。
10万セッションのサイトでは、10万セッション分のファイルハンドルが必要なんだよ。
十分メモり喰うし、長時間セッション使ってるとメモリリークも起きる。
0460nobodyさん2006/07/14(金) 18:25:44ID:???
>>459
10万セッションも必要なサイトの管理者はこんなスレ来ねぇよバカ。

っていうか10万セッションもあったらファイルハンドラじゃ無理があるからDB使うし、
そもそもサーバ1台じゃなくて複数台に分散するんだよクズ。
0461nobodyさん2006/07/14(金) 23:07:11ID:???
愛のメモリリーク
0462nobodyさん2006/07/14(金) 23:48:16ID:???
っていうか10万セッションをファイル使って、
しかも負荷分散しないでやってたら(やれるとしたら)、
そもそもメモリリーク以前にもっと別の問題が起きると
思うけどなww
0463nobodyさん2006/07/15(土) 00:26:38ID:???
>>459
もう少し勉強したら自分がキチガイなこと言ってるって分かるよ。
0464nobodyさん2006/07/15(土) 01:04:45ID:???
>>459は、まれにみるバ(以下略
0465nobodyさん2006/07/16(日) 09:00:01ID:???
>>459はセッション処理の為に開かれたファイルは、そのまま開かれているものとして語っているみたいだな。
恥さらしもその辺にしとけよ(w
0466nobodyさん2006/07/16(日) 10:37:13ID:???
つまりセッションは大規模サイトでは無理ってことですね。
0467nobodyさん2006/07/16(日) 13:34:14ID:???
>>466
だから何を見当違いのことを言ってんだ、おまいは。
もしやおまいは>>459=>>456か??
0468nobodyさん2006/07/17(月) 04:55:48ID:???
phpで10万セッション自体があり得ない。
その前にメモリ喰いまくりで太ったアパッチごとkillされる。
0469nobodyさん2006/07/17(月) 09:19:18ID:???
〃∩ ∧ ∧
⊂⌒( ・ω・)  はいはいわろすわろす
 `ヽ_っ⌒/⌒c
    ⌒ ⌒
0470nobodyさん2006/07/18(火) 01:12:16ID:???
大丈夫。リナクスの場合は10万セッションも接続北来た瞬間再起動するから(w
2003鯖を使ってる漏れは勝ち組。
0471nobodyさん2006/07/18(火) 10:40:48ID:???
>>465がトドメという感じだが、流石にもう食い下がってはこないか??
0472nobodyさん2006/07/18(火) 13:45:02ID:???
しっかし、「セッションでメモリリーク」なんて珍説、はじめて聞いたよww
0473nobodyさん2006/07/18(火) 14:14:20ID:???
メモリリークしないって思い込みって、バグは無いって思い込みで出荷しちゃったシンドラエレベータの殺人プログラマ並みに馬鹿だな。
人氏んでるんやで。プログラムぐらいまともに組め。
0474nobodyさん2006/07/18(火) 15:06:36ID:???
詭弁の見本市みたいになってきたな。
0475nobodyさん2006/07/18(火) 17:17:25ID:???
>>473
だからメモリリークが発生するというのなら、
具体的な根拠や発生機序を示せよ。
0476nobodyさん2006/07/19(水) 03:06:06ID:???
港区のエレベータで死亡事故。
上昇直前に開ボタンを押すとメモリリークが発生して死亡事故が起きる。
0477nobodyさん2006/07/19(水) 03:15:59ID:???
メモリリークするって思い込みって、バグは無いって思い込みで出荷しちゃったシンドラエレベータの殺人プログラマ並みに馬鹿だな。
人氏んでるんやで。プログラムぐらいまともに組め。
0478nobodyさん2006/07/19(水) 03:18:08ID:???
セッションといえばWeb製作板の携帯スレで暴れてた馬鹿が居たが、同一人物っぽい香りがするな(w
0479nobodyさん2006/07/19(水) 09:14:38ID:???
> メモリリークが発生して死亡事故が起きる。
おめでたい思考回路ですね。
0480nobodyさん2006/07/19(水) 09:24:01ID:???
他人に何を言われても引き下がらない
とても漢らしい生き方だと思いました
0481nobodyさん2006/07/19(水) 11:23:40ID:???
往生際が悪い の間違いだろ(w
0482nobodyさん2006/07/19(水) 14:01:34ID:???
メモリリークは発生するってことでおk?
0483nobodyさん2006/07/19(水) 15:31:59ID:???
テポドン2の発射もメモリリークが原因! とか言い出しかねないなwww
0484nobodyさん2006/07/19(水) 16:58:02ID:???
ハワイまで到達できなかったのはメモリリークでしょ。
0485nobodyさん2006/07/20(木) 01:22:24ID:???
セッションによるメモリリークの存在を強硬に主張しているが、
いまだに具体例や証拠が一切出されていないのが笑えるw
0486nobodyさん2006/07/20(木) 10:56:20ID:???
メモリリークの存在を必死に否定しているが、10万セッション達成の具体例や証拠が一切出されていないのが笑える。
0487nobodyさん2006/07/20(木) 12:56:36ID:???
今なら言える。




必死だな(w
0488nobodyさん2006/07/21(金) 06:32:39ID:???
>>486=バカ

ヒント;>>460,>>462,>>468
0489nobodyさん2006/07/21(金) 23:44:57ID:???
メモリリークの意味を知らないか、PHPがステートレスだと言うこと自体知らないんだろ。
0490nobodyさん2006/07/23(日) 01:17:39ID:???
メモリリーク厨のオモシロ回答まだぁ〜〜??ww
0491nobodyさん2006/07/26(水) 12:00:14ID:???
>>444-450
これってどういうこと?
ブラウザが閉じられるまでgcが発生しないようになんて
できないよね?
そんな方法があるなら知りたい。

gc_maxlifetimeを1年ぐらいに設定するとかはなしでw
0492nobodyさん2006/07/27(木) 09:05:35ID:???
>>491
ない
445が間違えてるだけ
0493nobodyさん2006/07/28(金) 07:54:27ID:???
>>491-492
んなこたぁないだろう。
そしたら「ブラウザ閉じない限りはずっとログインし続けたまま」の
システムを作ることが不可能になるじゃんか。
0494nobodyさん2006/07/28(金) 08:04:14ID:???
つーか、session.gc_maxlifetimeって、
一体どのタイミングからカウントされた秒数なの?

最初のアクセスか、それとも最後のアクセスか・・・
0495nobodyさん2006/07/28(金) 08:42:49ID:???
>>493
不可能だし

>>494
まず試せ
0496nobodyさん2006/07/28(金) 09:24:42ID:???
>>494-495
まずググれ。
が,正解かと。
0497nobodyさん2006/07/28(金) 14:19:59ID:???
>>495
不可能じゃないよ。
だってmixiとか、ブラウザ閉じなければ何日でもずっと
ログイン状態が継続してるし。
0498nobodyさん2006/07/28(金) 16:48:36ID:???
>>497
それ、セッションじゃなくて、クッキーにユーザー名とか保存してるだけじゃ無いの?
セッション何日も維持するなんて、セキュリティ上あり得んよ。

クッキーに何を保存してるか、見てみれば?
0499nobodyさん2006/07/28(金) 18:55:06ID:???
mixiはブラウザ閉じても次アクセスすればログイン状態では?
ちなみにクッキーは3個。すべてセッションオンリーはNO、有効期限は5年。

クッキーにユーザー名とか保存はしてない。直接の値が書き込まれているのは表示設定のみ。
ていうかそっちの方がセキュリティ上問題あるだろう
0500nobodyさん2006/07/28(金) 20:37:40ID:???
>>498
mixiのクッキーにはユーザー名(メアド)は書いてないよ。

>>499
>セッションオンリーはNO
↑これどういう意味??

>mixiはブラウザ閉じても次アクセスすればログイン状態では?
「次回から自動ログインする」にチェックを入れてログインしたなら、ね。
0501nobodyさん2006/07/28(金) 21:47:39ID:???
>>500
>セッションオンリー
ブラウザを終了したらクッキーを破棄するかどうか(これがオンだと有効期限は設定されない)

「次回から自動ログインする」にチェックしたらセッションオンリー=オフで有効期限5年のクッキー
チェックしなかったらセッションオンリー=オンのクッキー
という使い分けみたいですね。
0502nobodyさん2006/07/28(金) 22:13:32ID:???
>>501
あれっ、mixiのクッキー内にそんなデータあった??
俺見てみたけど、見当たらないぞ・・・

っていうか「BF_STAMP」って何を指してるんだろう? BFが何の略なのかも気になる。
0503nobodyさん2006/07/28(金) 23:41:45ID:???
>>501
言いたいことは分からないでもないが
セッションオンリー
って言葉はどうなの?

>>502
独自のセッションを実装してるみたいだね
ワンタイムパスワードみたいなのを3つくらい返してる
mixiって同じIDで別の端末からも利用できるの?
できるんならサーバ側の情報管理はたいへんそうだな
0504nobodyさん2006/07/29(土) 02:55:05ID:???
>>503
たしかにワンタイムパスワードみたいなのがあるね。
でも何回かログインとログアウトを繰り返してみたところ、
そのワンタイムパスワードみたいなのは変化しなかった。
ってことは「ワンタイム」じゃない!?
0505nobodyさん2006/07/29(土) 09:11:18ID:???
>>504
ってことはmd5とかで変換しただけのものを
クッキーに保存して毎回アクセスするたびに認証してるだけだね
セッションじゃないじゃん

一番確実な方法だと思うが
セキュリティ的にはhttpsでもないしだめだと思う
0506nobodyさん2006/07/29(土) 11:57:07ID:???
気になったからみてみた>mixi

BF_SESSION
が 999_jidjaijdiojaidjhifjaj1399
みたいになってて先頭の数字が会員IDで後ろは
会員に対するランダムな文字列
(ってことで会員IDもかかれてるよ)

BF_STAMP
がパスワードになにかしたもの。
(パスワードを変更すると変化する)

BF_LOCAL_SESSION
が一時的なセッション管理用っぽい。

認証はCOOKIE(BF_SESSIONとSTAMP)で管理して
一時的なセッション情報(すぐに消えてもいいもの)を
BF_LOCAL_SESSIONのほうでやってると思われ。

ちなみに BF_ がなんの略かは分からない。
0507nobodyさん2006/07/29(土) 12:17:15ID:???
BFはmixiのコアライブラリBoofyのことやろね。
以前フロントエンドのソースコード流出で話題になってた。
0508nobodyさん2006/07/29(土) 13:13:55ID:???
mixiは招待無しで参加できないの?
0509nobodyさん2006/07/29(土) 13:30:05ID:???
無理
0510nobodyさん2006/07/29(土) 13:37:05ID:???
そこをなんとか
0511nobodyさん2006/07/29(土) 15:33:58ID:???
>>506が神に一歩近づきました。

mixiはDBもロードバランスしてたりするから、
セッション管理とかもやたら複雑なんだろうなぁ。。。

もっと小規模のSNSだったなら、そこまで複雑なCOOKIEにならないで済むのかな?
たとえばOpenPNEとか。使ったことないけど。
■ このスレッドは過去ログ倉庫に格納されています