• 締切済み

複数のセッションを同時に発行できますか?

要点:: PHPで複数のセッションを同時に発行できるのでしょうか?? もしできるのであればその方法が知りたいです。 説明:: http://q.hatena.ne.jp/1135082837 のような感じでメール認証を行うために 固有のキーをつけたURLを同時に複数のユーザーに発行したいです。 コレだけだとリンク先の方法で可能だったのですが、以下の条件があります。 ・同時に複数のユーザーに発行する(←コレも上記リンクで可能) ・SID(session_id)をつけてPHPのセッション機能を利用する(←コレは一人分だけなら可能でした*後述) ・ユーザーごとに別のセッションを発行する(←ここが問題になっています...) セッションを利用しての登録は ●セッションID付のURLをメール送信  ↓ ●新しいsession_idを古い物を削除せずに発行(session_regenerate_id()) とすることで可能だったのですが、 複数のユーザーに同時発行しようとしてloopさせてもセッションIDがひとつしか発行されません。 (同一スクリプト内だとsession_destroyなどを行っても同じsession_idが発行される) セッションがらみで参考にしているのは以下のサイトです http://search.net-newbie.com/php/ref.session.html セッションはそういう使い方はできない (原則的に1つしか発行できない)のでしょうか? よろしくおねがいいたします。

みんなの回答

回答No.1

そもそも、ユニークキー発行の概念とセッションを勘違いされてるからだと思います。 やりたいことは、ユニークなキーの発行だと思いますので、それをセッションで行なうのはどうかと・・・ (逆にセッションはユニークなキーなのですがね) キーを一意になるようにランダムで何個か発行し、 キー付きのアクセスがきたらそのキーの正当性を判断し、 はじめてセッションを発行すべきだと思うのですが・・・ キーの発行の仕方は、ファイルなり、DBなりを使って発行してください。 キーには時間制限を設ける + 他のパラメータと組み合わせての発行 or キー自体が可逆である みたいにしないと、セキュリティ上は弱いと思われます。

coron_88
質問者

お礼

さっそく丁寧なご回答ありがとうございます! まさにpanerai777さんのおっしゃるとおりなのですが、 セッションの勉強のために可能かどうか知りたいのです。。。 なぞの質問で申し訳ないですが、 ありがとうございました。

coron_88
質問者

補足

header情報にSIDがつくとおかしくなるので ブラウザのCookieはオフにしています。 コードは↓こんな感じです。 本当はforeachでまわしています。 session_startやcloseをいろいろ変えてみたのですが、 これが一番いい線いっていました・・・ //ここで古いセッション保存 $sess_01 = $_SESSION; $sid_01 = session_id(); //2人目のユーザ用セッション発行 session_destroy(); session_regenerate_id(); session_start(); $_SESSION['account'] = "user02"; $sess_02 = $_SESSION; $sid_02 = session_id(); session_write_close(); ....

すると、全ての回答が全文表示されます。

関連するQ&A