
PHP学習中ですがかなり苦戦しています。
やりたいことは「サイトに最後にアクセスした時点から一定期間有効なセッションをつくりたい」です。
普通のセッションだと有効期限が「セッションをつくってからX秒」になってしまうと思うのですが、これを「サイトのいずれかのページにアクセスした時点からX秒」にしたいのです。
たとえば、最初にサイトにアクセスしてもらった時点で24時間有効なセッション(というかクッキー?)を開始します。このセッションが有効な間はブラウザを閉じても再ログインが必要ないです。(←ここまではできました)
でも24時間経ってしまうと、サイトを閲覧している最中でもログアウト状態になってしまいます。これを改善したいです。
初心者でも理解可能なやり方はないでしょうか?
よろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>たとえば、最初にサイトにアクセスしてもらった時点で24時間有効なセッション(というかクッキー?)を開始します。
このセッションが有効な間はブラウザを閉じても再ログインが必要ないです。(←ここまではできました)次回どこかのページにアクセスしたときに、セッションデータの中の期限を更新するだけです。ここまでできているということは、「24時間」を設定しているのはどのデータかは把握していますよね?
セッションデータが具体的にどの方法で格納されているかの情報がないため何とも言えませんが、PHPのセッションを使っているなら$_SESSIONだろうし、DBを使っているのであればそのDBデータの書き換え(初回はINSERTかもしれないが、次回以降はUPDATE)になるでしょう。
また、ブラウザを閉じても有効ということは、cookieそのものにも期限をつけているはずですので、上記のセッションの更新とともに、cookieの期限の更新も行う必要があるかもしれません。
No.4
- 回答日時:
No.2の補足について
// 最終アクセス時刻と現時刻を比較
if (time() - $_SESSION['last'] > 期限) 期限切れ処理();
// セッションの最終アクセス時刻を現時刻で更新
$_SESSION['last'] = time();
No.3
- 回答日時:
No1です。
>すみません、そのやり方がわかりません。
質問者様が現状のコードでどこかに記述しているはずですけれど・・?
>←ここまではできました
とあるので、できているのですよね?
https://www.php.net/manual/ja/function.setcookie …
https://www.php.net/manual/ja/function.session-s …
No.2
- 回答日時:
クッキー有効期限ではなく、セッション値で独自に判断しましょう
* 初回時にセッションに "最終アクセス時刻" を作成
* アクセス毎に最終アクセス時刻と現時刻から有効かを判定
* 有効ならば、セッションの最終アクセス時刻を現時刻で更新
もう一歩進めて、初回アクセス時刻も管理すれば、
初回から一週間以内 and 最終から一日以内
などと判断できるので、更にセキュリティ向上が図れると思います
No.1
- 回答日時:
こんにちは
具体的な内容が不明ですが・・
>←ここまではできました
とのことですので。
自動ログインした際に、
・クッキーを更新
・セッションスタート
すれば、ご希望のようになりませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- Google Drive 会社への勤怠届出にGoogleフォームを使用しています。 しかし、最近何故か『このサービスはビジター 2 2022/12/05 00:21
- その他(ネットショッピング・通販・ECサイト) URLの有効期限について 1 2022/09/10 16:41
- その他(ゲーム) ファイナルファンタジー7リメイクのnormalクリア後のセッションセレクトについて。 セッションを自 2 2023/04/11 16:52
- その他(ブラウザ) このページは動作していません HTTP ERROR 401 2 2022/11/28 12:11
- Chrome(クローム) 仕事で使っているGmailがログインできません。 ログインすると、 「組織がプロフィールの作成を求め 1 2022/06/16 08:40
- 弁護士・行政書士・司法書士・社会保険労務士 ★行政書士試験の民法についての質問になります。 物権変動についての質問になります。 問 不動産の取得 1 2023/05/24 19:36
- 格安スマホ・SIMフリースマホ ゲオモバイルSIM契約 Amazon ギフトカード1万5000円 メインアカウントに入金できる? 1 2022/12/24 17:35
- その他(メールソフト・メールサービス) メールアプリ spark にauメールが入れられない!!! 1 2022/08/19 23:51
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
ログインしたら他からログイン...
-
セッション変数の命名規則
-
ログイン画面をはさんだ後、自...
-
完全なセッション破棄をしたい
-
複数ページでセッションを使わ...
-
別ブラウザ間でセッションの値...
-
PHP cookieの値が更新されない...
-
Sessionの上限について
-
「戻る」ボタンで値の保持
-
PHPSESSIDについて
-
PHPでログイン人数を制限したい
-
sessioncookieをではなくcookie...
-
PHP SESSION変数を複数使用でき...
-
swfファイルでセッション情報を...
-
セッション変数と配列
-
PHPSESSIDの表示
-
ブラウザを閉じた後もセッショ...
-
PHPのセッション有効期限について
-
学校の授業で困っていることが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPSESSIDの表示
-
PHPのセッション有効期限について
-
Sessionの上限について
-
ログイン画面をはさんだ後、自...
-
ログインしたら他からログイン...
-
セッションについて
-
セッション変数にパスワードを...
-
sessioncookieをではなくcookie...
-
クッキーを使わないセッション...
-
セッションのスコープ(有効範...
-
二重ログイン管理について
-
完全なセッション破棄をしたい
-
PHP cookieの値が更新されない...
-
ブラウザを閉じた後もセッショ...
-
PHPでログイン人数を制限したい
-
swfファイルでセッション情報を...
-
セッションを用いたデータの変...
-
セッション変数と配列
-
PHPSESSIDについて
おすすめ情報
すみません、そのやり方がわかりません。
どういうコードになるのでしょうか?
もう少し詳しくお聞きしていいでしょうか?
>* 有効ならば、セッションの最終アクセス時刻を現時刻で更新
↑このところですが、そこをどうすればいいのかがわかりません。
session.cookie_lifetimeを変えればいいのでしょうか?どうもうまくいきません。よかったらライフタイムを変えるコードを教えていただけませんか?