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 を保存します。これでインターネットが切断され、dhcp が有効になっている isp に再接続し、新しい IP が与えられました。そのため、再度 Web サイトにアクセスすると、コードの 2 番目のブロックが別の IP を持っていることを確認し、ログアウトします。
また、セッション「last_ip」がまだ作成されていない場合に php 通知がスローされないように、コードの 2 番目のブロックをこれに編集します。
if (isset($_SESSION['last_ip']) && $_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}