• 締切済み

session_cache_limiterについて

お世話になっています。 キャッシュで、悩んでいます。 ログイン(セッションに名前などを登録)  ↓ 入力フォーム(「登録」ボタンを押す)  ↓ 判定(エラーが発生したら、「戻る」ボタンを押してもらい、 入力フォームに戻る。) という、ごくありきたりな、事をやっているのですが、 iniファイルで、session_cache_limiter('nocache') にすると、「戻る」ボタンを押しても、先ほど入力 したデータが全て消えています。 今度は、入力フォームの先頭で、session_cache_limiter("public");を 入れると、確かに、「戻る」ボタンを押しても、先ほど入力したデータが 保持されていますが、この状態で、 session_unset(); session_destroy(); をして、再度、入力フォームに行っても、前回のセッション情報 (前回ログインした、ユーザー名)を保持したままになっています。 セッションの情報のキャッシュは破棄して、入力フォームのデータ はキャッシュしたいのですが何か良い方法は、無いでしょうか? session_cache_limiter("private");にしても、結果は同じです。 環境は、php4.06 apache1.3 です。 よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数4

みんなの回答

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

> セッションの情報のキャッシュは破棄して、入力フォームのデータ > はキャッシュしたいのですが何か良い方法は、無いでしょうか? では、入力フォームのデータはどこからもって来ればいいのでしょう(笑) どうしてもそうしたいのであれば、 from.php $data=$_SESSION["ses_data"]; session_unregister("ses_data"); と、セッションデータを他の変数に格納してから破棄します。 to.php $ses_data=$_POST["data"]; session_register("ses_data"); と、from.phpより、データを受けており、それをセッションに登録します。 ところで、なぜこう言うことがしたいのですか? それとも、私何か勘違いしていますか?(^^;

関連するQ&A

  • PHP セッションを利用した入力フォーム

    入力内容をセッションで保持しているフォームで, 入力画面から「前の画面に戻る」ボタンが押された際に 保持していた入力内容のセッションを破棄するようにしたいのですが, どのようにしたらいいでしょうか. unset($_SESSION['変数名'])で破棄できるのはわかっているのですが, これをどこに記述したらいいのかがわかりません. それとも,別の破棄する方法があるのでしょうか. 入力内容に関係ないところでもセッションを使っているので, session_destroy()ですべて破棄するのはしたくありません. よろしくお願いいたします.

    • ベストアンサー
    • PHP
  • session,タスク作成,formでPOST後戻る、データ復帰、再入力不可

    phpでフォームをつくり二重登録防止のためこちら(http://code.nanigac.com/source/view/178)のサイトを参考にセッションを追加しました。 が、フォームで誤入力の後戻ると入力したデータが消えるので session.cache_limiterをnoneにしたり、METAに入っているキャッシュ関連のものを消してデータが消えないようになりましたが、 今度は再入力後登録しようとすると上記の機能によりエラーが出されてしまいます。 戻るボタンで前のページに戻り、[F5]キーでリフレッシュすれば データも消えず、登録も出来ましたが、それもどうかと思うので 戻るボタンで戻っただけで再登録できるようにしたいのですが、 どなたかやり方を教えてください。

    • ベストアンサー
    • PHP
  • セッションについて

    なんとかセッションを使えるようになってきた程度のものですが ここにきてちょっとした事が気になり質問させて下さい。 ポータルサイトをつくっており会員登録,ログイン,登録情報変更など 複数のフォームが存在します。 例えば・・・ ログイン時のセッション $_SESSION['login_id'],$_SESSION['login_pass'] 会員登録時のセッション $_SESSION['touroku_id'],$_SESSION['touroku_pass']など10程度 会員登録情報変更時のセッション $_SESSION['henkou_name'],$_SESSION['henkou_mail']など10程度 ・・・のような感じです。 全てセッションで管理していることが問題なのかもしれませんが いろんなページ(フォーム)をまわる度に多数のセッションを持っている 状態となってしまいます。 現状は、それぞれのページで必要のないセッションについては1つづつ unsetで明記し消去しているのですが多数あるのでどうも手間に感じて しまいます。 session_destroyで一括消去できれば楽なのですがログインしている 場合に必須なセッションもありそれもできない状態です。 この場合皆様はどのように管理をしているのでしょうか? 調べてみたのですが有力な情報もみつからず今後の参考になればと思い 質問させて頂きました。宜しくお願いします。

    • ベストアンサー
    • PHP
  • セッションの有効期限

    Linux7.2 + PHP4.2(DSO版)+ Apacheを使用しセッション管理を使用した認証機能を制作しています。 session.cache_expire = 180としているのに ログイン後20分くらいでセッションが切れる現象が生じています。 プログラム上では特別なことはしていません。 session_start(); session_cache_limiter('nocache'); を先頭に書いているだけです。 以下、php.iniのセッション関連の設定です。 どなた方この現象についてご存知でしたら教えて下さい。 宜しくお願いします。 session_auto session.save_handler = files session.save_path = /tmp session.use_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.gc_probability = 1 session.gc_maxlifetime = 1440 session.referer_check = session.entropy_length = 0 session.entropy_file = ;session.entropy_length = 16 ;session.entropy_file = /dev/urandom session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0

    • 締切済み
    • PHP
  • sessionがクリアされない

    教えてください。 BBB.phpでこのように書いていたとします。 <?php session_cache_limiter('private, must-revalidate'); session_start(); ~いろいろ処理~ unset($_SESSION['pcode']); ~いろいろ処理~ ?> <?php include(dirname(__FILE__).'/../include/header.php'); ?> </body></html> header.phpでは $_SESSION['pcode']を表示しているのですが、 前のページ(たとえばAAA.php)で$_SESSION['pcode']に値を入れていた場合 BBB.phpを表示すると その値が表示されてしまいます。 直前に unset($_SESSION['pcode']); をしているのに その前の値が表示されます。 includeはどのタイミングでなされるのでしょうか? また、 unset($_SESSION['pcode']); を有効にするにはどうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • SESSIONの削除について

    SESSIONを使用し、問い合わせフォームを作っています。 最後に問い合わせ完了をした際にSESSIONの削除をおこなっているのですが、 どのSESSION削除方法がよいかわからずご質問させていただきました。 ・unset(); ・$_SESSION = array(); フォームから受け取るSESSIONは $_SESSION['contact']['key']; $_SESSION['contact']['data']['name']; $_SESSION['contact']['data']['email']; としており、 unset($_SESSION['contact']); としています。 ところが、ユーザーAとユーザーBが同時にお問い合わせページに入力をおこなったとし、ユーザーAが先に完了した場合ユーザーBのSESSIONも削除される(切れる?)といった現象がおきており、困っております。(もしかしたら別問題かもしれませんが・・・) 自分の認識では unset()は個別に削除でき、ユーザーAのSESSIONのみ削除する。 $_SESSION = array();はユーザーA、ユーザーB両方のSESSIONを初期化(削除)すると認識しております。 間違っておりませんでしょうか?

    • 締切済み
    • PHP
  • $_SESSION = array() と session_destroy(); の関係性。

    //(1)セッション変数の値をクリア $_SESSION = array() //(2)セッションファイルを破棄 session_destroy(); ----------------------------------------------------- 以前にも似たようなことを質問させて頂きましたが、 その時には気にならなかった点が気になって来ましたので、 質問させて頂きます。 で、早速ですが、 (2)をするにあたり、(1)をする意味がわからないので、 どなたか教えて下さい。 セッションファイルを削除したならば、 セッション変数は引っ張って来られなくなるのでは? と私は思っているわけです。 よって、結局、引っ張って来られなくなる変数を、 (1)のようにしてクリアしておく意味が分からないのです。 セッション変数の値は、 セッションファイルから引いてきていると思っているのですが、 そうではないのでしょうか? ---------------------------------------------------------- また、 ちょっと話題は変わり、 unset($_SESSION)としてしまうと、何やらイケナイようなのですが(マニュアルにそう書かれている)、 これをすると、実際、どうなるのでしょう? セッション変数に登録されている複数の値を消す場合には、 array()を使ったり、session_unset()を使えば 良いことは分かっております。 私が知りたいのは、こういうことではなく、 あくまで、unset($_SESSION)してしまうと、 どうなってしまうのか(復元不能な致命的なソース破壊に陥る?!)、 これが知りたいのです。 よって、大きく分けて、質問は2つあることになります。 以上、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • セッションの有効期限の設定方法とログアウト方法

    会員システムをPHPのセッション管理を使って作っているのですが、 1.セッションの有効期限の時間を変更するためにはsession_cache_expireを使うんだと思うんですが、これは全ページのsession_start()の前に書かないといけないのでしょうか? それとも、ログインするときに必ず通るPHPファイルに書いておけば大丈夫なのでしょうか? 2.会員ログアウトをする場合は、 unset($_SESSION['****']); でログインするときに入れた変数をunsetするだけで大丈夫なのでしょうか? もっと他に一般的な方法があったりするのでしょうか? どちらかだけでもお分かりの方がいれば教えていただければうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • session_start()の際のCannot send session cache limiterエラーについて

    現在、SJISだったサイトをUTF-8に変換する作業をしております。 今まで起こらなかったエラーなのですが、検索エンジンで、フォーム(index.php)に入力して送信した結果がsearch.phpに出るプログラムです。search.phpに下記のようなエラーが表示されるようになりました。 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/homepage/public_html/search/search.php:1) in /home/homepage/public_html/search/search.php on line 2 session_start()関数はもちろん<html>ヘッダーより前、プログラムの一番上に下記のように書いております。 <? session_start(); ?> <html> 他のページは問題無いのですが、今の所この検索プログラムの結果画面でのみ起こります。また、SJISで書いていた時はこのようなエラーは起こりませんでした。 恐らくUTF-8に変換した点がポイントだと思いますが、解決策が見つからずこちらに質問させていただきました。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • セッションデータが残ってしまう

    phpでログインページを作ってます。 「現在のログイン人数」を調べる方法として、ログインすると生成されるセッションデータの数でそれを表示しようと思ったのですが、ログアウト(またはウィンドウを閉じた)してもセッションデータが残ってしまいます。ログアウトならdestroyで消去するという手もありますが、ウィンドウを閉じた場合だとプログラムが働かないのでデータを消せません。 セッションデータが必要なくなったとき、それを削除するようにするにはどう設定したら良いのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう