• ベストアンサー

PHPのセッションについて

検索フォームから値を受け取り、該当するデータを表示するプログラムを作っているんですが、 session_regenerate_idを使ったセッション管理で行き詰っています。 session_regenerate_idを使うと1ページずつ進んでいく場合は、何も問題ありませんが、 現在のページからタブに複数ページを開こうとすると2つめ以降のタブ(ページ)が表示されなくなります。 おそらくsession_regenerate_idにより1つめのタブが開かれたときに、セッションが書き換えられて、 2つめのタブに正常にセッション変数が受け渡しできていないのが問題と思いますが、どのように解決したらよいのかわかりません。 セキュリティ対策をした上でページ間共有をスムーズに行うにはどのようにすればよろしいのでしょうか。 ちなみにセッションはフリーワード検索のみに使用します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#111181
noname#111181
回答No.1

基本的に、セッションで1つのページから2つのページに枝分かれさせるという実装は行いません。一般論としては、ページは1枚ずつ進めていくものです。 セッションをCookieに持たせれば(session_set_cookie_params)できますが、セキュリティ面で弱くなりますので、ご注意ください。

hetare560
質問者

お礼

回答ありがとうございます。 試行錯誤した結果、なんとか自分の思い通りの動作をするように出来ました。

その他の回答 (1)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

タブってのは、タブブラウザでのタブって意味で良いのでしょうか? そもそも、 >セッション変数が受け渡しできていない 事をどうやって確認したのか、推測しているのみで確認はできていないのか、よくわからないのですが。 なんとなく、設計とマッチしないこと、あるいはよく判らずに対策している事が原因で、セキュリティ対策のつもりで入れているコードが暴走してるのでは?って気がします。 どこから来たかって、refererを参照したセキュリティ対策のつもりのコードを入れているけど、新しいタブを開いた場合はrefererに何も入っていないとか? ブラウザ不明なので適当な推測を述べてますが。 たとえば、ひとつのタブでは「あ」と検索して、別のタブでは「い」と検索して、それぞれのタブで検索結果のリストが10件以上あったらページ送り(次の10件など)のリンクがあるって事をやりたいって意味ですかね? ※10件でなくてもいいけど もしそれで合ってるとして、検索ワードをセッション変数に保存している? もしそうだとすると、どうやってそれぞれのタブで表示されている検索ワードを一つのセッションに、タブ毎に関連付けして保存して、取り出しているか? ひとつの変数を取り合っているのか、何らかのIDを持たせて自前で管理しているのか? ひとつの変数を取り合っているならそれが原因の可能性高いし、自前の管理機能の暴走かも知れませんね。 そもそもやりたい事が見えない、何が起こっているのかもわからない、暗中模索で補足情報要求です。

hetare560
質問者

お礼

回答ありがとうございます。 私の至らない文のせいで、うまく状況をお伝えできず申し訳ございません。 今回はなんとか自分の思い通りに動作させる事ができましたので、 回答を締め切らせていただきます。

関連するQ&A