2011-07-15 15 views
4

私は、私は、そのセッションIDを知っている、site.Iの管理者が未設定の特定のセッションをしたいよちょうどこの設定解除speceficセッション使用して、セッションID

session_id("usernumber"); 
session_start(); 

のようなセッションを述べ

ユーザーユーザーAがユーザー番号 "123"を持っているとしましょう。 ユーザーAはセッションID( "123")として設定した後、sessio_id()を再生成しません。

どのように私はユーザーAに対してのみ破壊を解除できますか?

+2

簡単に見ては明らかに:[ 'session_unset()'](のhttp:// WWWを。 php.net/manual/function.session-unset.php)。 – Tomalak

+0

魔法使いのユーザーはログオンしますか?セッションハンドラを使用したオープンサイトですか? – Subdigger

+1

このコメントはあなたに役立ちます:http://www.php.net/manual/en/function.session-destroy.php#95809 –

答えて

6

....

<?php 

session_id($_GET['killsid']); 
session_start(); 
session_destroy() || die "failed to kill"; 
+0

は私のために働いていません – delive

+0

うまく働きました。 @Hardik Sondagarのコードは安全な実装には優れていますが、 –

1

私が知る限り、既定のセッションハンドラーでこれを行うための唯一のサポート方法は、ユーザーをsession_id("usernumber");と偽装して値を削除することです。

あなたはstore sessions in a databaseでもかまいませんが、これによってすべてが簡単になりますが、独自のセッション処理コードを記述する必要があります。

ところで、セッションIDはあなたが推測できない長いランダムな文字列であると考えられています。 123を使用すると、匿名の訪問者は誰でも簡単にログインできます。

1

session_save_path()を取得しようとすると(このディレクトリにセッションファイルが保存されます)。 デフォルトのセッション名を使用している場合、ファイル名はsess_jgimlf5edugvdtlaisumq0ham5のようになります.jgimlf5edugvdtlaisumq0ham5はユーザーセッションIDです。これらのファイルの編集権限がない限り、このファイルのリンクを解除することができます。ドキュメントへの逆セッションハンドラをengineringなし

+0

作品! public function drop_session($ session_id){ unlink(session_save_path()。 '/ sess_'。$ session_id); } – realmag777

7

Answer by Jack Luo on php.net

$session_id_to_destroy = 'nill2if998vhplq9f3pj08vjb1'; 
// 1. commit session if it's started. 
if (session_id()) { 
    session_commit(); 
} 

// 2. store current session id 
session_start(); 
$current_session_id = session_id(); 
session_commit(); 

// 3. hijack then destroy session specified. 
session_id($session_id_to_destroy); 
session_start(); 
session_destroy(); 
session_commit(); 

// 4. restore current session id. If don't restore it, your current session will refer  to the session you just destroyed! 
session_id($current_session_id); 
session_start(); 
session_commit(); 
+2

これは優れています。まさに私が探していたものなので、他の人をシステムから追い出すことができます。 – geilt

関連する問題