セッション管理をURLに付加されるよう設定したのですがログイン後のURLは
mb.example.com/my/
とセッションIDは付加されず他のページに相対リンクで移動すると
mb.example.com/my/team/?session_id=xxxxxxxx
のようにURLに付加されます。2ページ目移行は$_GET['session_id']で
セッションIDを取得できるのですが、1ページ目のようにURLから取得できない場合は
どの様にセッションIDを取得すればよいのでしょうか?
ご教授のほど宜しくお願い致します。
セッションIDを取得する$_GET['session_id']は、「ブラウザからのGETリクエストからsession_idを取得する」という動作になります。
これを踏まえてログイン直後の挙動を見ますと、ログイン直後(mb.example.com/my/)では、Webサーバ→ブラウザにsession_idを送信しただけで、ブラウザからのGETリクエストにはsession_idは含まれていません。
次に移動したとき(mb.example.com/my/team/?session_id=xxxxxxxx)では、ブラウザ→WebサーバにGETリクエストでsession_idが送信されたので、$_GET['session_id']で取得することができます。
1ページ目からセッションIDを取得するには方式の変更が必要かと思います。ぱっと思いつくものでは以下のような方法があります。
・GETから直接取得するのではなく、別の変数を定義する。
・ログイン後はログイン後ページにリダイレクトする。
ご回答ありがとうございました。
大変参考になりました。
PHPで問題ないでしょうか?
PHPの場合はsession_id()関数で取得できると思います。
ご回答ありがとうございます。
session_id()で取得できなかった・・と思ったらできました!!
書き込む位置が悪かった?ようです。
解決いたしました。
セッションIDそのものが欲しいのでなく、セッション変数に入れたり出したりしたいんだと思うのですが、ログイン時のユーザリクエストへのレスポンスにそのまま200 OKで一画面目を書き出してるなら、そもそもログイン後の1画面目で使う変数をセッションから取る必要は無いと思われます。
ログインを処理しているリクエストに対するレスポンスを書き出す時に使う変数の何処かに置いてやれば良いのでは。
セッションIDそのものが必要なら、ログインをしている処理のどっかでセッションIDを横取りできたら可能性でしょうけど、どういう環境なのか分からないのでアドバイスのしようがありません。
とりあえず、WEBのセッションなるものが一体なにものなのかは↓とか参照で。
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp06/entwebap...
ご回答ありがとうございます。
自分がPHPしかしないので環境の説明が抜けていました・・。失礼いたしました。
セッションID自体はマイページ内にformでジャンプするような仕組みがあるため、
相対リンクでは飛べないので必要でした。
ありがとうございました。
ご回答ありがとうございます。
session_id()で取得できなかった・・と思ったらできました!!
書き込む位置が悪かった?ようです。
解決いたしました。