phpのセッションの概念について
解決したいこと
phpのsession有効期限の概念について何度調べても理解できず、、、
どなたか心優しき方、ご教授いただければ幸いです。
現在ログイン情報を持ちまわるWEBサイトを構築中です。
以下の要領でファイルを構成しました。
//ファイルA
<?php
session_start();
//ログイン情報をもらった前提で
$_SESSION['user'] = $_POST['user'];
header('ファイルB or ファイルC');
?>
//ファイルB
<?php
session_start();
if(isset($_SESSION['user'])){
echo "こんにちは".$_SESSION['user']."さん";
処理 B;
}else{
header('ログインフォーム');
}
?>
//ファイルC
<?php
session_start();
if(isset($_SESSION['user'])){
echo "こんにちは".$_SESSION['user']."さん";
処理 C;
}else{
header('ログインフォーム');
}
?>
・要は最初にログインフォーム(上記3ファイルからは割愛)からログイン情報をもらう
・ファイルAでセッション変数に保存
・ファイルBもしくはCで持ち回りユーザーに応じた処理を行う
発生している問題・エラー
正確に測れていませんが約30~40分程度でログインが解除されてしまいます。
デフォルトでなっていそうな24分は超えることを確認しました。
→$_SESSION['user']が確認できずheader関数でログインフォームへ飛ばされる。
補足
ファイル環境がレンタルサーバーのためiniファイルに詳細設定ができない状況です。
具体的にはXserver無料プランです。
php.ini設定でそれと思しきものの変更は試しましたがうまくいきませんでした。
無料プランの為、サポートが無く自分で調べるに至った次第です。
教えていただきたいこと
①ファイルを交互に行き来した場合でも1セッション/1セッションファイルを参照となるのでしょうか?
②有効期限の概念
→セッションが途切れるのはどのタイミングなのでしょうか?一番最初のsession_start()からの期限?それとも最終読み込み時から?
→途切れるの実態は、セッションファイルの消滅なのか、セッションID(クッキー)の消滅なのか
③例えばファイルBから全く動かず有効期限を過ぎて再アクセスする場合、session_start()時には新しいセッションの開始という扱いになるのでしょうか?
→質問④に繋がるかもですが、その場合セッションIDは新旧2つ存在になると思います。その後は2つを同時に送信/参照ということになるのでしょうか?
④ガベージコレクションという仕組みを知りましたが、これは有効期限を過ぎた場合にはすぐにファイルを参照できなくなるのでしょうか?
それともデフォルトの1/1000回を偶然避ければ半永久的に参照できるのでしょうか?
→古いセッションIDをメモで控えていれば相当時間過ぎても参照ができる?
⑤有効期限延長はini_set()関数で合っていますでしょうか?
→あっていた場合、記述は一番最初にsession_start()を行うファイルAのみでいいでしょうか?それとも全ファイルでしょうか?
→全ファイルの場合、有効期限は毎回更新される?