質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

Q&A

解決済

4回答

1002閲覧

php.iniでタイムアウト

Roo

総合スコア55

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

0グッド

0クリップ

投稿2018/09/05 08:33

編集2018/09/05 09:36

ページ表示から3分間でタイムアウトさせたいです。

ログイン画面→マイページ→タイムアウト→ログイン画面
のようにしたいです。

画面表示から〇分経過でセッション破棄して
別ページに遷移する方法が知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

gc_maxlifetime を3分に設定しても3分でタイムアウトになる「場合がある」だけで
むしろほとんどの場合タイムアウトになりません。
サーバのセッション情報を積極的にガベージコレクションしてくれないからです。

質問者さまご提示の様な仕様にしたい場合、
他の方がおっしゃっている通りsession変数を使って
自前でタイムアウト判定する必要があります。

投稿2018/09/05 09:00

taka-saan

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Roo

2018/09/05 09:02

お忙しい中ご回答ありがとうございます。 勉強させていただきます。
guest

0

php.iniって限定する必要もないと思いますが・・・
質問としてはログイン後、30秒放置するとログアウトするということでしょうか?

方法としてしてはいくらでもあると思いますが、
最終アクセス時間をアクセスの度にどこかに保存して(DB,クッキー、セッション)
次にアクセス来た際に30秒以上保存していた時間より過ぎていればログイン情報を消してログイン画面に戻せばいいと思います。

投稿2018/09/05 08:43

taka2063

総合スコア307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Roo

2018/09/05 08:54

お忙しい中ご回答ありがとうございます。 はい3分間放置で強制ログアウトさせたいです。 セッションチェックでセッションがない場合直接アクセスは禁じています。
taka2063

2018/09/05 09:33

「強制ログアウト」というのは特に操作せずにログイン画面に移るということですかね? それならばjQuery,JavaScriptを使用しないと実現難しいかと思います。 次回のアクセスでいいのであればphp側でも処理可能ですね。
guest

0

ベストアンサー

【PHP超入門】Cookieとセッションについて - Qiita
によると、
session.gc_maxlifetime
らしい。

だけど、php.iniってサーバー内で一つしか持てないから、
一つのサーバーで複数のシステムを動かしてそれぞれ違うセッションの有効期限をもたせることを考えると、
php.iniで極端な値を設定してしまうのは不都合かもしれない。
ini_set('session.gc_maxlifetime', 60 * 60 * 24);とかすればひとまずそれでいいかもしれないけど。

php.iniの設定値依存せず、
自前でセッション管理アルゴリズムを起こして
セッション管理したほうが何かと都合いい気もするのですけどね。
(例えば複数アカウントの使い回し対策とかね。)

投稿2018/09/05 08:42

編集2018/09/05 08:51
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Roo

2018/09/05 09:00

session.gc_maxlifetime ↑試したのですが、うまくいかず、、 お忙しい中ご回答感謝いたします。 ini_set('session.gc_maxlifetime', 60 * 60 * 24); ↑試してみますね。
guest

0

各画面に JavaScript を仕込んで、「画面表示開始より○○分たったらログアウト画面へ遷移させる」なんて方法もあります。
指定した時間以内に別の画面へ遷移し続けなければなりませんが。

投稿2018/09/05 09:17

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Roo

2018/09/05 09:35

それがやりたいのですがphpでは無理でしょうか?
tacsheaven

2018/09/05 09:38

PHP はサーバー側なので、セッションが切れたとしても、自動で遷移してはくれません。遷移したときにセッション切れを検知してログイン画面へリダイレクトさせるだけです。 つまり何らかのアクションが起きない限りは対応できません。
Roo

2018/09/05 09:40

なんと、、、。もう少し調べてみます
tacsheaven

2018/09/05 09:52

PHP はサーバー側で処理をして、結果の HTML(他色々)をクライアント(Webブラウザ)に送ります。ですから、画面を表示し終わった時点で、PHPの処理は終了しているのです。 「画面を表示して何分後に何かをする」のは、PHPの作業ではなくて、ブラウザ側(JavaScript)の作業になります。これは PHP が Ruby であれ Python であれ Java であれ静的な HTML であれ、同じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問