2011-09-08 9 views
-1

特定のユーザーセッション(サイトから禁止されているユーザーセッション)の設定を解除することはできますか? 各セッションにはユーザーのユーザー名が含まれています。php session unset

または、セッションをデータベースに書き込む唯一の方法で、ユーザーがそのレコードから削除されているかどうかを確認しますか?

ありがとうございます。

+0

http://php.net/manual/en/function.session-destroy.phpユーザーノートには解決策があります –

答えて

0

データベースからユーザーを削除するだけです。

ログイン資格情報を確認しているとします。


そうのようなあなたのセッションにタイムアウトを追加することができます。

define('SESSION_EXPIRE', 3600 * 5); //5 hours 
if (!isset($_SESSION['CREATED'])) { 
    $_SESSION['CREATED'] = time(); 
} else if (time() - $_SESSION['CREATED'] > SESSION_EXPIRE) { 
    session_regenerate_id(true); // change session ID for the current session an invalidate old session ID 
    session_destroy(); 
    session_start(); 
    $_SESSION['CREATED'] = time(); // update creation time 
} 
+0

はい、ログイン資格情報を確認します。しかし、セッションがアクティブになるまで、ユーザーはサイトにコメントを残すことができます。 – Sergio

+0

@Sergio - すべてのセッションにタイムアウトを設定します。私の答えにそれを加えてください。 – Neal

+0

@Sergio - 私の答えに追加したセッションのタイムアウトを見てください。 – Neal

1

PHPは、セッションIDが発行されているかどうかを追跡していません - セッションクッキーは、要求とのsession_start上で来るとき()が呼び出されると、そのセッションのID(sess_XXXX)で指定されたファイルをセッション保存ディレクトリで探してロードします。

ログインシステムでユーザーの現在のセッションIDが記録されていない限り、ユーザーのセッションを含むファイルの保存ディレクトリをスキャンしてファイルを削除する必要があります。幸いなことに、それはのような単純なもので行うことができます。

$session_dir = session_save_path(); 
$out = exec("rm -f `grep -l $username $session_dir/*`"); 

あなたはおそらく安全/もう少し安全な何かをしたいと思いますが、それはそれの基本です。

0

私は、あなたがコメントすることを許可する前に、PHPにデータベースを読み込ませ、その人物がパーミッションを公開しているかどうかを確認するのが最善の方法だと思います。エラーでない場合はエラーを返します。

Facebookが行うもう1つのことは、数分ごとにPHPファイルをチェックするAJAX呼び出しがあることです。 PHPファイルは、ユーザーがログオンしているかオフになっているかを戻し、ログオフされている場合、Javascriptはそれらをページ外にリダイレクトします。