
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ランキング
-
ログイン画面をはさんだ後、自...
-
セッション変数にパスワードを...
-
セッションのスコープ(有効範...
-
複数ページでセッションを使わ...
-
ログインしたら他からログイン...
-
Sessionの上限について
-
switch()文で値の大小比較
-
Excel VBA:特定の文字列以降(...
-
IPアドレス変更方法
-
Dosブロンプトでtabを出力したい
-
現在時刻をyyyymmddhhmmss形式...
-
【C#】DataGridViewの最大列数...
-
スクレイピングに適した言語を...
-
「取得先」という表現について
-
excel access連携 このテーブル...
-
Yahoo! JAPAN IDを新規取得でき...
-
findstrのerrorlevel
-
EXCEL、マクロ-改ページ行番号...
-
バッチファイルでpingの結果を...
-
php history.back()の戻るボタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
Sessionの上限について
-
ログイン画面をはさんだ後、自...
-
完全なセッション破棄をしたい
-
セッション変数の命名規則
-
ログインしたら他からログイン...
-
セッション変数にパスワードを...
-
PHP cookieの値が更新されない...
-
$_SESSIONと、POSTやGETの違い
-
二重ログイン管理について
-
PHP SESSION変数を複数使用でき...
-
PHPでログイン人数を制限したい
-
セッションのスコープ(有効範...
-
PHPのセッション有効期限について
-
複数ページでセッションを使わ...
-
php4のセッション機能とブラウ...
-
セッション ID とセッション名...
-
PHPのセッションについて
-
フォームの入力値のセッション...
-
クッキーを使わないセッション...
おすすめ情報
すみません、そのやり方がわかりません。
どういうコードになるのでしょうか?
もう少し詳しくお聞きしていいでしょうか?
>* 有効ならば、セッションの最終アクセス時刻を現時刻で更新
↑このところですが、そこをどうすればいいのかがわかりません。
session.cookie_lifetimeを変えればいいのでしょうか?どうもうまくいきません。よかったらライフタイムを変えるコードを教えていただけませんか?