if (isset($_SESSION['last_ip']) === false) {
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
はセッション「last_ip」はまだ作成されていない場合は、それが作成され、ユーザの現在のIPの値を格納することを意味します。上記のコード
if ($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
「last_ip」のセッション値は、あなたの現在のIPに等しくない場合、それはすべてのセッション変数(session_unset)を解放し、セッション(session_destroy)に登録されたすべてのデータを破壊することを示しています。
実際のシナリオを説明しましょう。
あなたのウェブサイトにアクセスするので、最初に ブロックのコードが私の現在のIPを保存します。今すぐ私のインターネットが切断されました と私は私のISPに再接続してdhcpを有効にして、新しいIPを に与えます。あなたのウェブサイトにもう一度アクセスすると、コードの2番目のブロックが私が別のIPを持っていることをチェックするので、私はログアウトします。
また、セッション "last_ip"がまだ作成されていない場合は、PHPの通知を投げないように、2番目のコードブロックを編集してください。
if (isset($_SESSION['last_ip']) && $_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
セッションが削除された場合、ユーザーはログインすると新しいIPから新しいセッションを取得できます。 –
はい、そうです。 – Halcyon
私はsession_regenerate_id(true)を追加しています。これらの2つはどのように連携して動作していますか? –