• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Sessionのデータ保持について)

Sessionのデータ保持について

このQ&Aのポイント
  • Sessionにデータを保持している状態で、Webサーバーのシステム日付を変更するとデータが消える可能性があるのか?
  • 開発環境でデバッグした結果、Sessionの中身がnullになる現象を確認
  • データの格納後にWebサーバーのシステム日時を変更すると、取り出したデータがnullになる問題

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

  • ベストアンサー
  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちは。 >>Sessionに保持しているデータが消えてしまうということはありますか? うん? あるんじゃないですか? デフォルト設定のままでも、数時間放置しておけばSession切れると思いますけど。 「数時間」ってのがミソで、その場合の時間判断は、そこのサーバのシステム時間でしか経過時間の判断が出来ませんから、システム時間いじくったら、それに伴ってSessionも時間切れとなって無くなるんじゃないかと思われます。 確証は持ってませんけどね。。。 システム時間動かして検証なんてやったことないですし(汗 Sessionの保持時間設定は、Webサーバレベルや、プログラムソースレベルでも可能なので。。。 ・1時間ぐらいに設定して。。。 実際1時間放置したらSessionが切れること確認する システム時間動かして、「59分」の状態で切れないことを確認する システム時間動かして「1時間1分」経過の状態で切れてることを確認する とか。。。まぁ、そういう確認でもしておけばいいんじゃないかと。 (もしくは、どっかのASP解説サイトでSessionに関しての記述をお勉強する? http://www.netdive.jp/asp.html >>(2)Webサーバーのシステム日付(日時)を変更 そもそも、既にシステムで使ってるWebサーバのシステム時間なんて、そう簡単にがちゃがちゃいじるものじゃありません(笑 時間がずれて、たまに直す必要がある。。。とかでしたら、毎日定時で、ネット経由で標準時間に合わせてくれるようなツールでも起動しておきましょう。フリーで、多分あるでしょう。 解決方法とすれば。。。 Sessionに持たない。しかないかと。 DBに格納するなり、システムソース側で、FORM渡ししとくとか。 まぁ、Sessionが一番確実かとは思うんですけどね。。。 こんな感じですかね? 他の方の知識も参考にしたいので、動向見守ってます-w-*

siro0616
質問者

お礼

STICKY2006さん、とても参考になるアドバイス有難う御座います。 仰るとおり、システム日付(日時)をいじった時点でセッション保持のタイムがオーバーしている場合にエラーになってしまうという、セッションタイムアウトが原因でした。 sessionは利用するタイミングで毎回システム日付とsession生成日時を比較してるんですね! そもそもWebサーバーのシステム日付がいじられることなんて、ほぼ無いというのもごもっともなので、毎日定時でシステム日時を標準時間に合せるという対応のみしたいと思います。有難う御座いました!

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

関連するQ&A

  • Railsのセッションについて

    Ruby On Railsについて質問です。 環境はRails2.1でWEB開発を行っていますが 特に設定を変えずにセッションでデータを保持するとそれはクッキーに書かれるのでしょうか? またセッションがクッキーに保持されるのであればセッションをアプリケーションサーバに 保持させたいです。その方法を教えて貰えないでしょうか?

    • ベストアンサー
    • Ruby
  • セッションが使えたり使えなかったりする

    レンタルサーバを使用しているのですが、セッションが使えたり使えなかったりします。 使えなくなるとPHPSESSIDはNULLになります。 これは何が原因なのでしょうか? 共用のレンタルサーバなので、サーバのメモリが足らずに保存しきれていないのかなと推測してレンタルサーバに問い合わせたところ、以下のような返答が来ました。 /**********************************************/ SESSIONは初期の設定では、サーバーのシステム領域に保存されます。 しかし、定期的にクリアされますので、お客さま領域内に保存されるよう 変更していただきお試しいただけますでしょうか。 session.save_pathを変更する場合には、 設定を変更したいディレクトリ内にphp.iniファイルを 設置していただくことで該当ディレクトリのみ設定が有効になります。 設定が反映されているかはphpinfoにて確認が可能です。 なお、設定を有効にしたいディレクトリが複数ある場合には 各ディレクトリにてphp.iniファイルを設置してください。 また、php.iniの記述方法に関してはご案内していないため 参考書籍やWebサイト等にてご確認ください。 /**********************************************/ session.save_pathを変更すると何ができるんでしょう? この「セッションが使えない」という問題はクライアント側で解決できることなのでしょうか?

    • ベストアンサー
    • PHP
  • セッションにはどんなデータを保存するべきか

    セッションにどんなデータを保存していいのかよくわかりません。 私はセッションというのはプログラムでいうところのstatic変数みたいな物かと考えているのですが、 この認識であっているでしょうか? 具体的にはセッションにはユーザID等のWebシステム上全体で保持するべき値のみが許されて、A,B,Cの3つの画面間でのみ共有するような値はセッションに保存してはいけないという具合です。 抽象的な質問ですが、よろしければご回答下さい。

  • header(Location:~)で$_SESSION[" "]が保持されない。

    自宅サーバー(apache2+php5+mysql5)のlocalhost環境で、 header(Lcation:~)の記述をすると、 セッションが保持されない現象が起きています。 本番環境のレンタルサーバーは、同じ記述で、 しっかりとセッションが保持されます。 この原因は、何でしょうか? php.iniの設定など、何か考えられることがあれば、 是非教えて下さい。 【やりたいこと】 ■a.php **************************************** <?php echo<<<EOD <form method="POST" action="./b.php"> <INPUT type="text" name="test"> <INPUT type="submit" name="Submit" value="確認画面へ"> </form> EOD; ?> ■b.php **************************************** <?php $_SESSION["test"]=$_POST["test"]; header("Location:./c.php"); ?> ■c.php **************************************** <?php echo $_SESSION["test"]; ?> 自宅サーバーだと、 a.phpで入れたデータが、c.phpで表示されません。 レンタルサーバーだと、 セッションが保持され、表示されます。

    • ベストアンサー
    • PHP
  • Sessionの保持

    いつもお世話になっています。 ASP.NET を勉強しているのですが参考資料が手元になく WEBでいろいろ検索をかけていたのですが該当した記事が見つからず ここで質問させていただきます。 かなり、初歩的な質問だと思うのですが、Sessionの値の保持の仕方がいまいちつかめません。 例えば、 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ページを初期化するユーザー コードをここに挿入します。 If Not IsPostBack Then Session("test") = 0 End If Response.Write(Session("test")) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Session("test") = Session("test") + 1 End Sub 上記のようにプログラムを組んだとして、ページを表示後に Button1 をクリックしても Session("test") の値が計算されていない場合があります。 つまり、Nothing の状態になっているのです。 かと思えば、次に Button1 をクリックしたら計算されていたり、 はたまた、もう1度 Button1 をクリックしたら Nothing になっていたりします。 ちなみに規則性はありません。 タイムアウトかとも思ったのですが、 デフォルトの20ままで動かしていますし、ページ表示後から Button1 のクリックまで2、3秒でも 不規則な動きをします。 何かIISの設定なのかなぁ?とも思っているのですが、皆目検討がつかずご教授いただけたらと思っています。 よろしくお願いいたします。

  • セッションとクッキーに関して

    おはようございます。 TomcatとJavaに関してですが、 通常(特別何もせず、ただ、sessionに格納する場合) sessionに格納したデータは、クッキーに出力されるのですか? それとも、サーバ上のメモリに格納されているのですか? ご回答お願い致しますm(_ _)m

    • ベストアンサー
    • Java
  • web developerのデータ保持について

     Visual Studio 2010でWebアプリケーションを作成しているのですが、データテーブルからのデータを代入した変数のデータを保持する仕方が分かりません。  アプリケーション変数かセッション変数を使えば、datatableのデータ保持ができそうだと思ったのですが、使い方がいまいち分かりません。  どなたか詳しい方おられましたら、回答のほどよろしくお願いいたします。

  • セッションに格納する方法

    あるプロジェクトのWebアプリを引き継ぐことになりそのソースを見ていたところ あるメソッドで次のようにしてセッションに格納した値をやりくりしている部分があり???? と思ったので質問させてください。 //ログイン情報を取得 A aObj = (A)session.getAttribute("LOGIN_INFO"); //セッションンにフラグを格納 aObj.setFlag = true; そして別のメソッドで下記のように再度ログイン情報を取得し上記メソッドでセットしたフラグを取得 //ログイン情報を取得 A aObj = (A)session.getAttribute("LOGIN_INFO"); if(aObj.getFlag) { System.out.println("hello"); } ここで疑問なのですが最初に aObj.setFlag = true; とやった後に session.setAttribute("LOGIN_INFO", aObj); と明示的に記述してあげなくてもセッションの中のaObjの flagプロパティにはtrueに書き換えられるのでしょうか。 というかデバッグしてみたらtrueに書き換えがされていました。 (恐らく、オブジェクトの参照渡しのため) こういう書き方でセッションの中のオブジェクトが持つプロパティを書き換えるのって 一般的な書き方でしょうか。最初、パッと見たとき、セッションから取得したaObjにsetterで プロパティを書き換えているだけでセッションが保持するオブジェクトのプロパティを 書き換えているようには見えませんでした。 setterを実行することでセッションの保持するオブジェクトのプロパティを書き換えるという コードに違和感を感じたものでして・・・

    • ベストアンサー
    • Java
  • javaでのセッションについて

    javaでのセッションについてお聞きしたい事があります。 セッションについて下記のページを参考にしました。↓ http://www.atmarkit.co.jp/fjava/javafaq/session/session04.html このページにセッションのタイムアウトについて書いてあったのですが、 その中の文章で 「Webアプリケーションの場合は、ユーザーが処理の途中でブラウザを閉じるということもありますので、必ずしもログアウト処理が行われるとは限りません。このような場合は、クライアント側は処理を終了しているのにもかかわらず、サーバ側にはそのクライアントに対するセッション情報が残ってしまいます」 というのがあったのですが、 自分の作成したwebアプリケーションで セッションを開始した(セッションオブジェクト(HttpSessionインターフェースのオブジェクト)作成)後、明示的に(コーディング上で)セッションを終了していないのに、ブラウザの右上の×ボタンで閉じた後、再びwebアプリケーションで処理を開始すると、セッションオブジェクトがnullになっていました。 ここで、「セッションオブジェクトがnull」=「セッション情報が残っている」と言うのは、間違いでよろしいのでしょうか? 自分は上記の文章で、「セッション情報が残っている」=「セッションオブジェクトがnullでない」と解釈しているのですが。 何か分かる事がありましたら、ご教授お願い致します。

    • ベストアンサー
    • Java
  • CGI::Sessionでのユーザとの紐付け方法

    【できていること】 Cookieの発行 Cookieへのデータの書き込みと参照 【ここから質問】 ログイン認証があるWebアプリケーションにおいて、セッション情報(ID)とユーザ情報はどのように紐付けているのでしょうか? (ログイン成功時に生成するセッションIDとユーザ情報の紐付け情報をどこにどのように保持するのかがわかりません) Cookie(クライアント側)はセッションIDのみを保持しておいて、サーバ側で紐付け情報を保持するのだと思うのですが、CGI::Sessionではセッション生成時に作成されるcgise_XXXXファイルに書き込むのでしょうか?(そのメソッドか、具体例があれば教えてください) それとも紐付け専用のテーブルを用意しておくのでしょうか、もしくは、ユーザ情報のテーブルにあらかじめセッション情報を格納するカラムでも用意しておくのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl