前提・実現したいこと
PHPでWebアプリケーションを作っており、ログイン機能を実装したいと思っています。
ログインされたらブラウザが閉じられた後にも一定時間はログインされっぱなしにし、メイン画面に直接アクセスしてもログイン画面にリダイレクトされないようにしたいです。
発生している問題・エラーメッセージ
ログイン画面でログインされた後セッションに会員情報が保管されているデータベースのidを保存して、メイン画面に移行するようにしています。
ログインされた状態でブラウザの別タブを開きメイン画面のURLを入力するとセッションのid情報を参照して登録されている会員かチェックし、登録されている会員であればログインされたままになっていますが、ブラウザを閉じるとセッション情報がなくなって再度ログインが必要になってしまいます。
該当のソースコード
下記のおためしコードを作成してセッションの挙動を確認していました。
上のlogin.phpにアクセスするとセッションが保存されて下のmain.phpに移動されるようにしています。
ブラウザを一度閉じた後に下のmain.phpに直接アクセスしても設定した期限内であればHello World!が表示されるようにしたいです。
php
1<?php 2session_start(); 3$_SESSION["test"] = "on"; 4header("Location: ./test.php"); 5exit(); 6?>
<?php session_start(); if ($_SESSION["test"] !== "on") { header("Location: ./index.php"); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> Hello World! </body> </html>
試したこと
自分なりに調べてみたところ、session.cookie_lifetimeの値を設定することでブラウザが閉じられても設定した値の秒数はセッションが破棄されないことが分かりましたが、セキュリティ的に問題ないのかという点までは分かりませんでした。
ログイン状態を2週間保ちたい場合に、session.cookie_lifetimeの値を606024*14にしても問題ないか、もしくは他のベストプラクティスがあればご教授いただきたいです。
補足情報(FW/ツールのバージョンなど)
Windows10
XAMPP3.2.4
PHP8.0.1
apache2.4.46
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/25 10:49