• 締切済み

php4のセッション機能とブラウザのキャッシュについて

はじめまして 今 php4でプログラムを書いているのですが、セッション機能 と ブラウザのキャッシュの関係について教えてくれませんか? php4では、ブラウザ(クライアント)にキャッシュを可能に するかどうかという設定が ありますが、 キャッシュを可能にしない場合は、ブラウザで[戻る]を 選択すると キャッシュの期限が切れているとエラー表示され ます。次に キャッシュを可能にした場合は、上記のような エラーはでないのですが、一度 操作した部分に対して ブラウザのキャッシュが 効いてしまい、セッションファイル を使用できなくなります。 この問題を解決するには、セッション機能とブラウザのキャッシュ の関係について学習すればいいと思うのですが、いい資料 がありません。どうか 教えて下さい。 では 失礼します。

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

みんなの回答

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

自分はPHPLIBを使ってセッションを実現していますが・・・ どうもドキュメントを読んだ限りではPHPLIBと同様の方法を取っているようです なのでPHPLIBのsession.incを読んでみるのはいかがでしょうか? コード量的にもさして大きくありません PHPLIBの関連リンク http://www.php.gr.jp/php/phplib/ PHP4のセッション機能のドキュメント http://snaps.php.net/manual/ja/html/ref.session.html ブラウザのキャッシュはRFC2068 HTTP1.1あたりを参考にして見てください

関連するQ&A

  • ブラウザ更新と同等機能をPHPで行いたいのですが

    ■質問1 ・ブラウザ更新と同等機能をPHPで行いたいのですが、どうすれば良いでしょうか? ・クライアントなので、JavaScriptでしか行えないのでしょうか? ・この場所を通過したら、ブラウザ更新みたいなことをやりたい場合は、こういう感じで良いのでしょうか? echo "<script type=\"text/javascript\">location.reload(true)</script>"; ■質問2 ・画像ファイルをrenameしているのですが、「ブラウザ更新」クリックしないと、画像が切り替わりません(リダイレクトしても) ・どういう原因が想定されるでしょうか? ・clearstatcache();は書いてるのですが… ■質問3 ・「画像ファイルキャッシュ」、「ブラウザキャッシュ」「リダイレクト」「リロード」の違いを教えて ・「ブラウザ更新」すると、「画像ファイルキャッシュ」「ブラウザキャッシュ」が更新される、のでしょうか? ・「ブラウザキャッシュ」を削除しても、「画像ファイルキャッシュ」は削除されないのでしょうか?

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

    はじめまして。 phpを始めて1週間の初心者です。 現在、ホームページでログイン処理とログアウト処理をphpのセッションを使って作成しています。 今回質問させて頂くのはログアウト処理についてです。 ログアウト処理をでセッションを破棄する際に http://oshiete1.goo.ne.jp/qa3224862.html を参考にして下記の処理を行わせています。 -------------------- logout01.php -------------------- <?php session_start(); $_SESSION = array(); if(isset($_COOKIE[session_name()])){setcookie(session_name(),'',time()-4200,'/');} session_destroy(); header("location: http://~トップページのURL~/"); ?> -------------------- 確認をしたところ、ログインしたユーザの情報は削除されているようでした。 また、http://oshiete1.goo.ne.jp/qa3224862.htmlを参考に下記のようなログアウト処理も行わせてみました。 -------------------- logout02.php -------------------- <?php session_start(); unset($_SESSION['access']); header("location: http://~トップページのURL~/"); ?> -------------------- 同じく確認したところ、ログインしたユーザ情報は削除されているようでした。 -------------------- 環境 -------------------- <サーバ> 【OS】 windows XP(テスト環境)、CentOS 5.2(公開環境) 【PHP】 5.2.6 【Apache】 2.2 <クライアント> 【OS】 windows XP 【ブラウザ】 Firefox 3.0.8 IE 7 -------------------- -------------------- 質問 -------------------- (1)logout01.phpとlogout02.phpの違いは何でしょうか。 (2)「unset($_SESSION);」は使用すると「$_SESSION」が使えなくなるとのことですが、  それはphpを再インストールしない限りは使えなくなるということでしょうか。  それとも、ブラウザを再起動すれば使えるという意味でしょうか。 (3)「unset($_SESSION);」と「unset($_SESSION['access']);」では何が違うのでしょうか。 (3)セッションを使用するとサーバ側にセッションIDを保存したファイルが保存され、  クッキーがクライアント側に保存されるとのことですが、logout01.phpとlogout02.phpを  実行した場合、サーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 (4)セッションの有効期限を指定していないため、logout01.phpとlogout02.phpを実行せずに  ブラウザを終了させた時もログインしたユーザ情報は削除されているようでしたが、  この場合もサーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 初歩的な質問で申し訳御座いませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • セッション機能が使えない

    セッション機能を使って開発していたのですが、どうも思うように動作しないので、書籍に載っていた簡単なプログラムを試してみましたが動作しませんでした。 <書籍のソース> <?php session_name("MYSESS"); session_start(); if(!session_is_registered("access")) { session_register("access"); $access=1; } else { $access++; } ?> <html> <body> <p><?=$access?>回目の訪問です</p> <p><a href="sample.php?<?=SID?>">ここをクリック</a></p> </body> </html> 実行すると、「1回目の訪問です」と出て、クリックしても1回目のままで、増えることがありません。 <php.iniのsessionに関する部分の設定> [Session] session.name=PHPSESSID session.auto_start=1 session.serialize_handler=php session.gc_probability=1 session.gc_divisor=100 session.gc_maxlifetime=1440 session.bug_compat_42=0 session.bug_compat_warn=0 session.cache_limiter=nocache session.cache_expire=180 session.use_trans_sid=0 セッションデータは、ファイルとしては保存されていますが、中を見ると access|N; となっています。 他にもスクリプトを試しましたがすべてこのファイルのデータはNのままで値が保存されることがありません。 お気づきの点がありましたらご指摘をお願いいたします。

    • ベストアンサー
    • PHP
  • phpのセッションについて質問です

    phpで会員制サイトの制作を勉強中です。 pdoでmysqlデータベースに接続しています。 セッションの「session_set_cookie_params」について質問ですが、 session_set_cookie_paramsで有効期限を設定する場合、 ログイン時にsession_set_cookie_paramsでセッションの有効期限を設定し、 他のページではsession_start()さえ記述すれば、 有効期限を過ぎると勝手にセッション変数のデータを空にしてくれるのでしょうか? それとも全てのページにsession_set_cookie_paramsを書かなければならないのでしょうか? プログラムを書いている上でセッションの動作がおかしい(有効期限が過ぎてもログアウトしない)のでsession_set_cookie_paramsの記述がおかしいのかと思い、質問しました。 また、セッション変数の有効期限を変数毎に個別に設定して削除する方法はないのでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP5のセッション管理に使う$_SESSIONに関する質問

    現在本と、WEBの入門サイトの二つでPHPを学習しているのですが $_SESSION変数を利用したアクセスカウンタのサンプルで WEBの情報では$_SESSIONを $_SESSION['count'] と書いていました(WEBはPHP4) そして、本の方では $_SESSION['acces_count'] と書いてありました そして、私は $_SESSION['acces_count'] を $_SESSION['testtest'] に変えて実行してみた所これでもエラーが出ずに実効できました $_SESSION変数のキーは、いかなる物でもかまわないのでしょうか

    • ベストアンサー
    • PHP
  • 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
  • セッション機能で

    セッション機能を利用するときに、セッション変数を宣言しますよね。 セッション変数を配列として使いたい場合にはどのように宣言すればよいのでしょうか? 実際のスクリプト内では session_start(); session_cache_limiter('limit'); session_register("hoge"); のように記述していますが、どうもうまく動作しません。 何か間違っている点があればご指摘・アドバイスをいただければありがたいです。 よろしくおねがいします。

    • 締切済み
    • PHP
  • 別ブラウザ間でセッションの値が共有されてしまう問題

    別ブラウザ間でセッションの値が共有されてしまう問題 あるサーバー(hostgator)で、セッションを使用するプログラム(PHP)を作っているのですが、あるブラウザで入力した値が、全ての異なるブラウザで同じ値を参照してしまっている 現象が出てしまい、困っています。 異なるブラウザというのは、別PC/別IPアドレスの別ブラウザでも、セッションを共有してしまっています。 同プログラムを、別会社のサーバーに入れた所、 きちんとブラウザごとに別の値が保存されているので、このサーバーだけの問題かと思い、 php.iniなどを調べてみたのですがそれらしい設定を見つけることができませんでした。 この現象を解決する方法をご存知のかた、おられないでしょうか? プログラム自体は、この現象を再現するために作ったもので、 以下の様なものです。 別ブラウザ間でセッションの値が共有されてしまう問題あるサーバー(hostgator)で、セッションを使用するプログラム(PHP)を作っているのですが、あるブラウザで入力した値が、全ての異なるブラウザで同じ値を参照してしまっている 現象が出てしまい、困っています。 異なるブラウザというのは、別PC/別IPアドレスの別ブラウザでも、セッションを共有してしまっています。 同プログラムを、別会社のサーバーに入れた所、 きちんとブラウザごとに別の値が保存されているので、このサーバーだけの問題かと思い、 php.iniなどを調べてみたのですがそれらしい設定を見つけることができませんでした。 この現象を解決する方法をご存知のかた、おられないでしょうか? プログラム自体は、この現象を再現するために作ったもので、 以下の様なものです。 session_start(); $_SESSION['val'] = $_SESSION['val'] + 1; echo $_SESSION['val'];

    • 締切済み
    • 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セッションの有効期限の調整

    ログイン処理を有するサイトをPHPで記述しています。ログインがあればセッション変数に値を格納し、このデータがあれば、再度ページのアクセス時にパスワードを要求を省略するようにプログラムを進めています。 ここで質問なのですが、セッションが有効になっているあいだに、対象ページへのアクセスがあったときに、そのセッションの期限を延長する方法はありますでしょうか。 また、session.cookie_lifetimeは、プログラム内でクッキーの制御を特に明示していない場合は、どのタイミングが起点として時間が決まるのでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう