お世話になっております。
phpのスクリプトで簡単なサイトを作ったのですが、今更ながらセッションの管理を行っていないことが問題になりそうなので、組み込む必要があります。
[環境]php5.5/WindowsServer2008/IIS
親プログラムでセッションの有効期限を設定し、別の画面に遷移した時に、セッション変数が生きているのかを確認すればよいのかなという認識で、実装する前に簡単な例で試してみました。
親プログラムを表示したまま15秒以上放置した状態で、子プログラムを呼び出した時に、セッション切れという判定を出したいのですが、うまくできません。
考え方が根本的に間違っているのか浅はかなのか、ご指摘頂けないでしょうか?
php
1[親プログラム:sess01.php] 2<?php 3// セッションの有効期限を15秒に設定 4ini_set( 'session.gc_maxlifetime', 15 ); // 秒(デフォルト:1440) 5ini_set( 'session.gc_probability', 1 ); // 分子(デフォルト:1) 6ini_set( 'session.gc_divisor', 1 ); // 分母(デフォルト:100) 7session_start(); 8if (!isset($_SESSION['name'])) { 9 // キー'count'が登録されていなければ、1を設定 10 $_SESSION['name'] = "test"; 11} 12echo $_SESSION['name']."に設定しました。<br />"; 13echo "<a href='sess02.php'>次の画面へ</a>"; 14?> 15 16[子プログラム:sess02.php] 17<?php 18// セッション管理開始 19session_start(); 20if (!isset($_SESSION['name'])) { 21 echo "セッションが切れています。<br />"; 22} else { 23 echo "セッション名は{$_SESSION['name']}です。<br />"; 24} 25echo "<a href='sess01.php'>元の画面へ</a>"; 26?>
セッションの保存先を指定する必要があるという記事を見かけたので、
session_save_path('\session');
としても、エラーになってしまいます。
そこで、WindowsServer上のフルパスで
session_save_path('f:\myweb\session');
と書くとエラーは出なくなり、実際に指定したフォルダにセッション情報のファイルが作られることは確認できたのですが、
今度は、時間経過前にセッションが切れた状態になってしまいます。
なにとぞよろしくお願いします。

回答2件
あなたの回答
tips
プレビュー