メンバーを追い出す機能を実装したいのですが、PHP でどのように実装すればよいでしょうか? 私のアイデアは、メンバーがログインするたびにセッション ID を記録することです。メンバーを追い出したい場合は、この ID を使用して行うことができます。サーバー上のセッションを削除するのですが、PHP でセッション ID を使用してセッションを削除できるかどうかわかりません。 ! !
各メンバーのログインのセッション ID を記録できるため(明らかにデータベースに保存する必要があります)
その後、セッション ファイル モードをデータベース モードに変更するだけです。直接
キックしたい人の対応するレコードを削除するだけです
各メンバーログインのセッションIDを記録できるので(明らかにデータベースに保存する必要があります)
その後、セッションファイルモードをデータベースに変更するだけですさあ、
キックしたい場合は、対応するレコードを削除してください
セッションはサーバーに保存されるため、削除するとクライアントのセッションを取得できなくなり、再度ログインする必要があります。
削除方法を知りたいです。確認したところ、この関数にはパラメータがありません。他のアカウントを削除する方法はありません。 SESSIONID を通して?
セッションがファイルに保存されている場合は、セッション ID を使用してファイルを削除することもできます。
セッション ファイルの保存場所は session.save_path で、phpinfo(); で見つけることができます
session_start();$_SESSION['test'] = 1;echo session_id();
モデレーターは、セッションをファイルに保存するのではなく、db に保存することを意味します。セッション ID が db に保存されているため、操作に便利です。次に、これを達成するために、セッション ID に基づいて対応する DB レコードを削除します。
セッションがファイルに保存されている場合は、セッション ID を使用してファイルを削除することもできます。
セッション ファイルの保存場所は session.save_path で、phpinfo(); で見つけることができます
session_start();$_SESSION['test'] = 1;echo session_id();
各メンバーのログインのセッション ID を記録できるため (明らかにデータベースに保存する必要があります)
その後、セッション ファイル モードを次のように変更するだけです。データベース モードを直接実行します
好きな人をキックしたい場合は、対応するレコードを削除するだけです
モデレーターは、セッションをファイルに保存するのではなく、db に保存することを意味します。セッション ID が db に保存されているため、操作に便利です。次に、これを達成するために、セッション ID に基づいて対応する DB レコードを削除します。
セッションがファイルに保存されている場合は、セッション ID を使用してファイルを削除することもできます。
セッション ファイルの保存場所は session.save_path で、phpinfo(); で見つけることができます
session_start();$_SESSION['test'] = 1;echo session_id();
session_set_save_handler がデータベース モードに転送されると、
コードを記述することなく、関連する操作が php によって自動的に完了します
ファイル モードのセッション一時ファイルは、ユーザー操作中にロックされます
session_id( は 2 つの間でのみ使用できます。ユーザー操作 ユーザーの sessionid);
session_write_close();
sessionid の一時ファイルを削除する
関連する操作は、コードを記述する必要はありません
ファイル モード セッション
session_id (user's sessionid);
session_write_close();
を使用して、sessionid の一時ファイルを削除できます。はい、間違いました。アクセスしているセッション ID ではなく、他のセッション ID のファイルを削除する必要があります。あなたが言ったこと
session_set_save_handler がデータベース モードに設定された後。 、関連する操作は PHP によって自動的に完了します。これはどういう意味ですか? ユーザーを追い出したい場合は、データベース内のユーザーのセッション ID 値を空に設定します。キックされたユーザーは他のページにアクセスし、自分のセッション ID を照会します。セッション ID が空の場合は、T によって削除されます。私の現在の理解はこれです。正しいかどうかはわかりませんが、モデレータは次のようになりますか?アドバイスをいただければ幸いです、ありがとうございます! ! !
そうです、sessionid に該当するレコードが無い場合は、再度ログインする必要があります
モデレーター様、ご返信ありがとうございます。投稿できます
そうです、sessionidに対応するレコードがないので、再度ログインする必要があります
モデレーターはセッションを行うことを意味します。セッション ID が db に保存されているため、すべてのセッションを db に保存でき、操作に便利です。次に、これを達成するために、セッション ID に基づいて対応する DB レコードを削除します。
セッションがファイルに保存されている場合は、セッション ID を使用してファイルを削除することもできます。
セッションファイルの保存場所は session.save_path で、phpinfo(); で見つけることができます
session_start();$_SESSION['test'] = 1;echo session_id();
モデレーターは、セッションをファイルに保存するのではなく、データベースに保存することを意味します。セッション ID はデータベースに保存されているため、セッションをデータベースに保存できます。操作に便利です。次に、これを達成するために、セッション ID に基づいて対応する DB レコードを削除します。
セッションがファイルに保存されている場合は、セッション ID を使用してファイルを削除することもできます。
セッション ファイルの保存場所は session.save_path で、phpinfo(); で見つけることができます
session_start();$_SESSION['test'] = 1;echo session_id();
session_set_save_handlerが入ったら。データベース モード
、関連する操作は php によって自動的に完了します。コードを記述する必要はありません。
ファイル モードのセッション一時ファイルは、ユーザー操作中にロックされます。
session_id (ユーザーの sessionid); のみを使用できます。
session_write_close();
2 つのユーザー操作間のセッション ID を削除します。
$con = mysql_connect("127.0.0.1", "root" , "111111");
mysql_select_db("セッション");
function open($save_path, $session_name) {
return(true);
}
関数 close() {
return(true);
}
function read($id) {
if ($result = mysql_query("select * from session where id='$id'")) {
if ($row = mysql_fetch_array($result)) {
return $row["data"];
}
} else {
return "";
}
}
function write($id, $sess_data) {
$sql = "SELECT * FROM session WHERE id = '".$id."' limit 1";
$check=mysql_query($sql);
$total=mysql_num_rows($check);
$result = false;
if($total<=0){
$sql = "insert into `session` set `id` = '$id',data='".$sess_data."',last_visit='".time()。 "";
mysql_query($sql);
}else{
$sql = "update session set data='$sess_data', last_visit='".time()."' where id='$id'";
$result = mysql_query($sql);
}
if ($result==true) {
trueを返す;
} else {
return false;
}
}
function destroy($id) {
if ($result = mysql_query("delete * from session where id='$id'")) {
return true;
} else {
return false;
}
}
function gc($maxlifetime) {
$sql = "delete from `session` where unix_timestamp(now()) -`last_visit` > '60'";
$result = mysql_query($sql);
if ($result == true) {
echo $sql;
true を返します。
} else {
echo "エラー";
false を返します。
}
}
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
@ini_set('session.gc_probability', 1);
@ini_set('session.gc_divisor', 2);
@ini_set('session.gc_maxlifetime', 60);
session_start();
?>//文件名session_user_start.php
版主求指点一下,我書了2个页面测试,
1.php
include 'session_user_start.php';
$_SESSION['test'] ="ok la";
echo「初期化OK」;
?>
另外一个
2.php
include 'session_user_start.php';
echo $_SESSION['test'];
?>
访问可能ですが、60 秒後に再び访问2.php発行现gc那个関数并不调用,请教一下怎么样能在セッション失效時候,访问2.php让GC这个関数数実行呢
gc の場合、crontab を書いて実装できます。
http://blog.csdn.net/fdipzone/article/details/7263361
gc 用の crontab を作成できます。
http://blog.csdn.net/fdipzone/article/details/7263361
セッション データを読み取るためにセッション データを返す必要がある理由はわかりました。
静的配列とセッションを使用して、検証中にセッション データと配列データを同時に保存することは可能ですか。