0

OK、私はこの投稿を読みました、そして誰かがこのコードを使ってユーザーがページを去ったかどうかをチェックすることを提案します:

    if($_SERVER['REQUEST_URI'] !== 'page_with_session.php'){
    session_destroy(); // Kill session for all pages but page_with_session.php
}

誰かがREQUEST_URIがどのように機能するかを説明してもらえますか?PHPマニュアルでREQUEST_URIが見つからないようです。または、ユーザーがページを離れたときに確認する別の方法を提案できますか。

このプロジェクトではJavascriptを使用できないことに注意してください。

4

3 に答える 3

3

そのコードを使用すると、ユーザーがサーバー上の別のページに変更されたときだけを知ることができます。彼が別の Web サイトに移動したり、タブ/ブラウザーを閉じたりすると、これは機能しません。代わりに JavaScript を使用するか、セッション タイムアウトを使用してください。REQUEST_URI は現在のリクエストの URI であるため、ユーザーがサーバー上の別のページに移動した場合、それが「セッション ページ」ではないことを確認してセッションを破棄できます。これは、書き換えまたは同様の手法を使用しない場合にのみ機能します。

于 2012-05-16T13:29:53.947 に答える
1

これを行う唯一の実際の方法は、非常に短いセッション タイムアウトを維持し、メタ リフレッシュを含む埋め込み iframe を使用するか、PHP ページを有効に保つために JavaScript 呼び出しを行うことです。

于 2012-05-16T13:42:08.960 に答える
1

$_SERVER は、ヘッダー、パス、スクリプトの場所などの情報を含む配列です。この配列のエントリは、Web サーバーによって作成されます。すべての Web サーバーがこれらのいずれかを提供するという保証はありません。サーバーは、一部を省略したり、ここにリストされていないものを提供したりする場合があります。とはいえ、これらの変数の多くは » CGI/1.1 仕様で考慮されているため、それらを期待できるはずです。

$HTTP_SERVER_VARS には同じ初期情報が含まれていますが、スーパーグローバルではありません。($HTTP_SERVER_VARS と $_SERVER は異なる変数であり、PHP はそれらをそのように処理することに注意してください)

'REQUEST_URI' このページにアクセスするために指定された URI。たとえば、「/index.html」です。

(c) php.net

ご覧のとおり、完全に説明されています。ユーザーがページを離れると、やりたいことができなくなります。@jimpicが言ったように、セッションを使用します。

于 2012-05-16T13:34:15.057 に答える