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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/09/24 19:31ID:SnRvXmpI
ブラウザを閉じたらセッションの効果がなくなるのって、
ブラウザを閉じることでクッキーを消しているからなのですね。。
知らなかったよーーーーうわーーーん
017517304/11/24 15:43:40ID:???
>>174
レスありがとうございます

ログイン前の匿名情報(ショッピングカートのようなもの)を
セッションIDで管理、
ログイン後の情報はセッションだとちょっと怖いので
セキュアクッキーでアクセスの度に毎回ログインチェックをしてます。

セッションIDだけで
クライアントを特定するのって
会員制のようなサイトでも普通なんでしょうかね?
0176nobodyさん04/11/25 03:52:30ID:???
>>175
個人的な構築法としてはセッションIDとログイン情報を関連付けて
セッションIDきたらログイン情報みて毎回チェックするけど
規模がデカイ or サーバしょぼい 場合は毎回チェックするとレスポンス落ちるから
Yahooみたいに重要な処理のときだけログインチェックみたいな形にしてる

けど173のケースだとログイン前からの情報とも連携するみたいだし
それならセッションIDとcookie使ってても納得できる

毎回ログインチェックするのに越したことはないけど
やっぱりサーバのスペック的な問題でレスポンスが結構影響でてくるから
重要なページ(個人情報変更)とかだけ認証っていう形でもありじゃないかな?

良いセッションの使い方があれば他の人フォロー頼みます。
0177nobodyさん04/11/26 20:15:19ID:5ndPRR48
PHPセッションを生成した段階で、接続元IPを保持すれば、少なくとも
全く異なるネットワーク&端末からの接続は排除できる。
(NAT環境とか一部のCATV環境からのアクセスはどうしようもないけど)。

で、その上でブラウザバージョンとか「相手から送られてくる情報」を、
『セッション単位のワンタイム情報』として管理すればかなりいけるんでない?

まぁ、金銭扱う場合は「やりすぎ」ってのはないだろうけど、使う側の利便性を
考えればワンタイム情報として上記を扱う(+独自のスパイス)でほぼ安全でしょう。
017817304/11/26 20:37:10ID:???
>>176
やっぱりサーバ負荷は一番気になるとこですね。
たいへん参考になりました。
ありがとうございました。

>>177
大企業などアクセスのたびに
毎回IPアドレスが変わる環境もあるから
だめじゃないかな?
0179nobodyさん04/11/27 05:47:30ID:pSdshSFH
>>178
> 大企業などアクセスのたびに
> 毎回IPアドレスが変わる環境もあるから
> だめじゃないかな?
そんな場合、HTTPに限らず他のサービスでも認証が絡む奴は
大問題になりそうな希ガス...

気のせい?
0180nobodyさん04/11/27 07:24:52ID:GhxEggFV
>>179
IPで認証するの?
0181nobodyさん04/11/27 13:53:20ID:???
>>179
そういう仕組みですから
みんなそれを前提につくってるんだよ
0182nobodyさん04/11/27 14:23:13ID:???
>>179
今更何を言ってるんだ?
0183nobodyさん04/11/28 09:37:50ID:???
そっか、世間ではFTPとかtelnet/sshとか、そんな奴にもクッキーセッションみたいな
「IPが変わってもサービスを継続する」実装が結構あるんですね。
確かに作っちゃえば可能だなー>セッション管理

ちょっと遊んでみよう(w
0184nobodyさん04/11/28 17:21:57ID:???
>>183
FTPとtelnet/SSHはステートレスなプロトコルではないので
セッション管理自体要らんと思う
0185nobodyさん04/11/28 23:38:51ID:???
$_SESSIONに"cid"っていう名前で登録しちゃいけないの?
他の変数は無事なのに、これだけたまに消えるんだけど…
0186nobodyさん04/11/29 12:38:23ID:???
>>184

>>178
> >>177
> 大企業などアクセスのたびに
> 毎回IPアドレスが変わる環境もあるから
> だめじゃないかな?

アクセスの度に変わるんだぜ?
Connection張りにきたからってACK返そうにも
すでにIPアドレスが変わっているんだぜ?

って、釣りか....>>178
0187nobodyさん04/11/29 14:14:13ID:???
>>186
それじゃインターネットに繋がってるだけで送受信できないし
ACK返す前に変わるとかそんなシステムあるの?

1回セッションした後でIP変わってもう一度セッションしたときに
どうなるかだろ
そもそも接続元IPを使ってどーのこーのって
今の時代に使ってるところないだろ
0188nobodyさん04/11/29 16:37:42ID:???
>>187
セッション汁!?

>>186
なんかかみ合ってない。
どういう意見なの?
できればはじめての発言でないなら前のレス番使ってくれ。
0189nobodyさん04/11/29 22:17:54ID:???
>>188
その回答は>>178だけが知っている。
「毎回IPアドレスが変わる環境」の“毎回”って何よ?
0190nobodyさん04/11/30 01:20:22ID:???
ttp://yougo.ascii24.com/gh/79/007983.html
黙って読め
0191nobodyさん04/11/30 09:58:03ID:???
>>189
もしかして
「ダイアルアップする度の間違いだろ」
とか思ってないよね?w
0192nobodyさん04/11/30 12:42:02ID:???
>>190
「アクセスの度」っていう「アクセス」の定義が不明なんじゃない?
セッションはその通りだけど、PHPのセッションとはまたちょっと違う気がする。
HTTPセッションが切れても状態を引き継ぐための一例としてPHPセッションが
有るんじゃないの?
0193nobodyさん04/11/30 14:41:16ID:???
>>192
セッションが切れてない間は
IPアドレスが変わらないって言いたいの?

なにが言いたいのか
結論を書いてくれないと
話しが終わらないんだけど
0194nobodyさん04/11/30 21:15:35ID:???
>>193
さっさと話を終わらせてくれって言いたいの?

ならそう言えよ
0195nobodyさん04/11/30 22:03:43ID:???
>>193
逆でしょ?
「IPアドレスが変わっても(サービスのために)セッションを切らない」
為の仕組みが「PHPセッション」な訳ですよ。

つか、「セッション」の定義を表現せねばなるまいね。
IPセッションなのか、HTTPセッションなのか。

0196nobodyさん04/11/30 22:54:22ID:???
>>195
激しく同意!

ってかセッションってWEBでのセッションはHTTPセッションで
PHPセッションとかってセッション管理だろ
Perl=CGIみたいな初心者的勘違いだな

けど>>186とかACKが帰ってくる前にIP変わるわけだから
これはセッション自体成り立たない

>>192
それはセッション管理だろ
0197nobodyさん04/12/01 11:09:14ID:???
どれがだれの発言なんだか
全くわからん
1人の自演だったらすごいけど
0198nobodyさん04/12/01 15:47:55ID:???
ここにはオレとオマイしかいませんよ?
0199nobodyさん04/12/01 17:02:20ID:???
>>198
よかった、一人じゃなかったんだ
0200nobodyさん04/12/01 19:13:52ID:???
少なくとも3人いるな(w
0201nobodyさん04/12/01 22:34:09ID:???
俺もいるよ
仲間はずれにしないでくれ
0202nobodyさん04/12/02 09:00:03ID:???
じゃぁ3人ってことね
0203nobodyさん04/12/02 09:43:08ID:???
4人目。
0204nobodyさん04/12/02 21:26:45ID:pa/YvkmO
点呼とか死ぬほどウゼーしさ、キモイから消えてくんね?
0205nobodyさん04/12/03 00:38:38ID:???
>>204
そんな無意味なこと書く前に>>178の後半に突っ込み入れるなり
フォロー入れるなりしてみろよ。出来なきゃすっこんでろ。
0206nobodyさん04/12/03 03:27:54ID:???
なんでそこで>>178が出てくるんだか
0207nobodyさん04/12/03 03:43:36ID:???
>>206
>>205==>>178
0208nobodyさん04/12/03 12:41:20ID:???
結構入れ食いだと聞いたんですが、
ここでいいんですか?
0209nobodyさん04/12/03 14:49:15ID:w3rfsX9n
かみ合わない会話が人格攻撃に発展したスレはココですか?
0210nobodyさん04/12/03 16:43:06ID:???
おまいらセッション使う時、ハンドラはファイル使ってますか?
それともDBハンドラ書いてます?

漏れはDBハンドラ使ってるけど。
0211nobodyさん04/12/04 09:33:25ID:???
>>210
バランシングしている複数のwebサーバでセッションを共有したいので
セッション情報はバックエンドのDBに入れてDBハンドラ使いまくりです。
0212nobodyさん04/12/04 10:21:05ID:???
俺はNFSでファイル共有してます。
物理的にバックエンドDBサーバと同じところにあるので
DBで共有しても良いのだが。特に意味は無いがファイルで。
021317804/12/04 12:27:40ID:???
>>205
なにか間違ってる?
0214nobodyさん04/12/04 14:45:51ID:???
>178 別に間違ってないと思うよ。
>183 とか >186 とかで訳分からん事言ってから話がおかしくなったみたいねえ。
0215nobodyさん04/12/04 21:59:42ID:???
なるほど...
021621004/12/08 02:26:30ID:???
>>211
漏れと用途が一緒だ。。

>>212
一度NFSでと考えたけど、オーバーヘッドでかくないですか?

DBハンドラでも大してかわらんかも。。。
ベンチはかってないから分からないけど。。
0217みきすけ05/01/18 09:30:28ID:fy32GETL
どうやってセッション管理すんの!!
0218みきお05/01/18 10:19:23ID:fy32GETL
みきすけさんへ
マニュアルを見てください。
0219nobodyさん05/01/18 10:49:26ID:???
>>217-218
新手の自演?
0220nobodyさん05/01/22 12:37:17ID:???
コントじゃろ。
0221みきすけ05/01/23 13:52:25ID:VKXvKdgM
この前の書き込みはすいませんでした。
掲示板とか書き込むの初めてなので失礼なことをしてしました。
今、授業でPostgreSQLとPHPを用いてでセッション管理と
ユーザ認証をするプログラムを書かなければならなくて本から
ユーザ認証のプログラムをパクッたんですが、変更しなければ
ならない箇所があるらしく、さっぱり分かりません。
ログイン後の画面のURLを直接入力してもログインしていない状態
ではエラーがでて、そこにとべないようにようにするには
プログラムに何て書けばよいのでしょうか?
理解度が足りず、意味が通じないような質問になってすみません。
0222nobodyさん05/01/23 13:58:56ID:???
その授業とやらには、先生やら生徒やらはおらんのかのぅ。
0223nobodyさん05/01/23 14:16:17ID:???
>>221
パクった本をまずはよく読むこと。
"課題"なんだから、意味判らんままにコードを流用すんな。

つか、見るのはどんな先生かしらんが、
PHPぐらいなら出版物の量も少ないので
コードのパクりかたが、あからさまだとばれるよ。
0224nobodyさん05/01/23 16:25:22ID:???
俺もPHPじゃないけど課題出た時に
めんどくさくて書籍のサンプル丸写ししたんだが、先生にばれた。

しかし、先生が机に叩き付けた本は出版社も著者も全然違う人だった。
うーん。
0225nobodyさん05/01/23 17:00:25ID:???
コードは知らんが、解説は本も別の本からのパクリが入ってることもある。
かといって別の本や資料を全然参考にもしてない記述は、
アレ?と思うような変な(適正とは言いがたい)内容のものも、ちらほら
0226nobodyさん05/01/23 18:54:00ID:???
>>224
そう言うのは変数名くらい変えとかないと。
あと、インデント幅とかカッコの付け方とか
コメントを適当に付けたりして誤魔化すと完璧。
0227nobodyさん05/02/04 13:02:28ID:vme7g+zP
まじ役にたたねぇ。
まともな回答一つもないし。
結局そんなもんか。

0228nobodyさん05/02/04 15:44:32ID:???
つーかPHP読めないとその他の言語に移ると絶望的だぞ
これほど簡単な言語はない。arrayの取り扱いを
始めたみたときは正直チンポの先から汁がちょっと出た。ちょっとだけね
0229nobodyさん05/02/15 18:16:00ID:???
携帯でtopページ以外をブックマークや直リン禁止にするという処理も
phpとセッション管理でできるのかな?
0230nobodyさん05/02/15 18:17:02ID:???
でも具体的にそういうスクリプト配ってる所ってないよね。
需要は充分すぎる程あると思うんだけど…
0231nobodyさん05/02/15 23:46:53ID:???
>需要は充分すぎる程あると思うんだけど…

そんなケツの穴の小さいこと考えてんのお前だけだよ(ガハハ
0232nobodyさん05/02/17 12:47:08ID:???
>>229
topページなんか見たくないんです
0233nobodyさん05/02/17 13:14:28ID:???
>>229-230
救えない阿呆
0234nobodyさん05/02/17 18:17:56ID:???
具体的の使い方が違いますよ。
0235nobodyさん05/02/17 18:39:57ID:???
このスレってなんのためにあんの?
0236nobodyさん05/02/17 18:44:58ID:???
>>1のことをプッて笑うスレですよ?
>>3書いたのオレだ。懐かすぃ
0237nobodyさん05/02/17 20:07:35ID:???
>>236
プッ
0238nobodyさん05/02/20 15:45:27ID:HD8VrkSM
セッションってhiddenによるデータの持ちまわしや
URLにクエリ文字列を埋め込む方法等とどのように使い分ければいい?
0239nobodyさん05/02/20 18:02:46ID:6EZLRG8p
ページの変遷すべてにformからsubmitで跳びたくなければURLで引き回しなさい
0240nobodyさん05/02/20 18:26:29ID:???
>>238は、
POST・GETの話じゃなくて、セッション使用とページ毎に全データ渡しの話の希ガス
オイラは特に使い分けはしてない。その時の気分次第
0241nobodyさん05/02/20 18:39:53ID:6EZLRG8p
>>229
セッション切れてたらTOPページにリダイレクトするとかで良いんじゃね?
024223805/02/21 02:23:56ID:???
つーかあれか。ページIDのようにボタンを押すたびに変わるような
ものはhiddenやクエリーで持ち、ログインIDやパスワードのような
ずっと持ちまわすようなものはセッションというような使い分けかな?
と自己レス。
0243nobodyさん05/02/22 00:15:50ID:???
藻巻いらPHPの知識とかどこで仕入れてくんの?
0244nobodyさん05/02/22 07:48:53ID:???
知識そのものじゃなく仕入れ方まで聞くのかよっ
0245nobodyさん05/02/22 12:43:47ID:???
>>243
魚河岸で。
0246nobodyさん05/02/22 18:43:15ID:???
俺はPerl⇒PHPときたが、Perlの場合は既存のスクリプトが腐るほどあったんでそれを参考にしながら覚えて
PHPはマニュアルが充実してるんで、殆どそれ見ながら覚えたヨ!
0247nobodyさん05/02/23 08:55:22ID:mE2XQAit
あげー
0248nobodyさん05/02/24 17:29:34ID:???
PHPは簡単だよ。・・・そう、知的障害児が道路を横断するのと同じぐらい
0249nobodyさん05/02/24 19:49:22ID:???
何を伝えたい例えなのか全然わがんね
0250nobodyさん05/02/24 21:38:01ID:???
>>248
貴様の息子/娘が知的障害児で産まれるように強く願ってます
0251nobodyさん05/02/24 23:25:30ID:???
ぶっちゃけPHPなんかリファレンス本を1日読めば次の日から
「PHPできます」って面接で言っちゃって大丈夫。
俺はそうした。余裕でしょこんな雑魚言語。
0252nobodyさん05/02/24 23:33:01ID:???
「できます」なんて指標は、客観的でないのでちっともあてに出来ない。
つうてもJava5年とか書かれてるスキルシートも全然あてにはならんが。
0253nobodyさん05/02/24 23:33:24ID:???
>>251
wラタ
よっぽど酷い会社なんだな
0254nobodyさん05/02/25 01:10:45ID:???
ワロタ
025525105/02/25 23:52:19ID:???
笑い事じゃなくて、PHPを習得するのに3日以上かかるようじゃ
正直プログラマとしてのセンスを疑うね。
0256nobodyさん05/02/25 23:54:11ID:4WDXXuTL
習得ってどの程度を言うのでしょうね
0257nobodyさん05/02/25 23:59:29ID:???
けいじばんつくれるぐらい!
0258nobodyさん05/02/26 10:15:19ID:???
>>251
そんなんで企業に入れるのか
やばくねぇかそこw
0259nobodyさん05/02/26 10:30:38ID:???
山田系かも
026025105/02/26 22:58:19ID:???
お前等ってPHPを習得するのに1ヶ月とかかけるわけ?能無しか?
ちなみに俺は会社に入ったわけじゃなくて個人事業主として
業務委託されてるだけだけどな。
0261nobodyさん05/02/26 23:20:36ID:???
習得ってどの程度を言うのでしょうね
セッションの話まだー?チンチン
0262nobodyさん05/02/27 01:15:18ID:???
セッションへんすうにだいにゅうできるぐらい!
0263nobodyさん05/02/27 21:56:58ID:???
>>261
普通に業務をこなせるくらいだろ?
馬鹿かお前?
0264nobodyさん05/03/01 22:07:03ID:???
PHPのマニュアルに載っていたものです。
page2でgreenとcatと時間が表示されるはずですが、
Welcome to page #2
1969 12 31 23:57:00
page 1
しか表示されません。なんででしょう・・・(´・ω・`)
--------------------------------------------
<?php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();
// cookieによるセッションが受け入れられていれば動作します
echo '<br /><a href="page2.php">page 2</a>';
// あるいは必要ならセッションIDを付加します
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
-----------------------------------------------
<?php
session_start();
echo 'Welcome to page #2<br>';
echo $_SESSION['favcolor']; // green
echo $_SESSION['animal'];   // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// page1.phpでやったように、ここでSIDを使うことができます。
echo '<br /><a href="page1.php">page 1</a>';
?>
0265nobodyさん@26405/03/01 22:08:48ID:B0aTXW7C
(追加)
OSとPHPは
Apache/1.3.28 (Win32)
PHP/4.3.10 です。
0266nobodyさん@26405/03/01 22:20:47ID:???
1969 12 31 23:57:00
と出るのは、$_SESSION['time'] がNULLのままだからでしょうね・・・

php.ini では
session.auto_start = Off
session.use_trans_sid = On
なんですが、他に設定するところなどがあるでしょうか?
0267nobodyさん05/03/02 12:42:44ID:???
まずは最初のページへアクセスした際に
php.iniで設定したsession.save_pathに
保存されているかを確認してみましょう。
0268nobodyさん05/03/02 12:45:20ID:???
あと、PHP will not create this directory structure automatically.
と書いてあるので、例えばsession.save_path = "C:\tmp"だったら事前に
tmpフォルダを作っておかないといけない。
0269nobodyさん@26405/03/02 22:07:46ID:???
>>267 >>268
お世話になります。

何故か php.ini で session.save_path = c:\php\sessiondata になってました・・・
(いつの間に???)

いろいろなページを参考にしていじっている内に、こうなってしまった様です。
一応、phpの下にsessiondataを作って動くようになりました。
基本的にはc:\tmpですよね・・・

お手数をお掛けしました。m(_ _)m
0270nobodyさん05/03/19 13:08:11ID:oXb2sDzY
セッション変数て、PHPデフォのファイルで管理すんのとDB使うのとぶっちゃけどっちが
早いの?軽いの?
0271nobodyさん05/03/19 13:36:06ID:???
どっちが速いかはようわからんっちゅーか、どーでもええし、どーせ大差ないとは思うんだけど
ユーザが増えたときにファイルだとinodeの制限を受けてエラー発生てのもあり得ますから。
だから大規模サイトならDB以外ありえない。
0272nobodyさん05/03/19 18:33:39ID:???
>>270
大規模の場合はバランサーはさんだりでめんどいからDBセッション多用する。
0273nobodyさん05/03/19 20:43:56ID:???
270じゃないけど参考になった
0274nobodyさん2005/04/21(木) 22:24:22ID:zxQ/ZLfo
session_regenerate_id();を使うとc:\tmpにsess_***・・・・・・・が残りまくります。
そこで、不要になったセッションファイルを削除しようと思います。
で、下記のようにしてみましたが、全然消えません・・・


session_start();

$session_id = session_id();//セッションIDのバックアップ
session_regenerate_id();//セッションID変更
unlink ("c:\\tmp\\sess_".$session_id);//以前のセッションIDのファイルを削除


ちなみに、
unlink("c:\\tmp\\sess_セッション番号の現物")を使うと確かに消えてくれます。

なんなんでしょか?これ?

■ このスレッドは過去ログ倉庫に格納されています