ホームページ  >  記事  >  バックエンド開発  >  PHPでセッションを削除および破棄する方法

PHPでセッションを削除および破棄する方法

PHPz
PHPzオリジナル
2017-04-26 14:32:2119443ブラウズ

PHP でセッションを削除および破棄する方法: セッション変数を使用した後、それを削除できます。ユーザーが Web システムを終了したい場合は、セッション変数を破棄することもできます。ログアウト機能を使用すると、サーバー内のすべてが破棄されます。

PHPでセッションを削除および破棄する方法

セッションを削除するには、単一のセッションを削除する、複数のセッションを削除する、現在のセッションを終了するという 3 つの主な方法があります。以下に、3 つの方法それぞれについて簡単に説明します。

(1)単一セッションの削除

単一セッションの削除は、配列の操作と同様に、$_SESSION 配列の要素を直接ログアウトすることを意味します。

例: $_SESSION['user'] 変数、unset() 関数を使用できます。コードは次のとおりです:

unset( $_SESSION['user']);

注: unset() 関数を使用する場合、$ 内の要素に注意してください。 _SESSION 配列は省略できません。つまり、配列全体を一度に登録解除すると、セッション全体の機能が無効になります。たとえば、unset($_SESSION) 関数はグローバル変数 $_SESSION を破棄します。復元する方法がなくなると、ユーザーは $_SESSION 変数を登録できなくなります。

複数またはすべての会話を削除したい場合は、次の 2 つの方法を使用できます。

(2)複数のセッションを削除する

セッションにユーザーが登録したすべての変数を削除する、つまり複数のセッションを削除する、つまりすべてのセッション変数を一度にログアウトしたい場合は、空の配列を渡すことができますこれを実現するには、$_SESSION に値を割り当てます。コードは次のとおりです:

$_SESSION = array();

(3)現在のセッションを終了します

セッション全体が終了した場合は、最初にすべてのセッション変数をログアウトしてから、 session_destroy() 関数は、現在のセッションをクリアして終了し、セッション内のすべてのリソースをクリアして、セッションを完全に破棄します。 コードは次のとおりです。

session_destroy();

session_start() 関数との比較 (作成中)セッション ファイル)、 session_destroy() 関数はセッションの操作を閉じるために使用されます (セッション ファイルの削除)。成功した場合は TRUE を返し、セッション データの破棄に失敗した場合は FALSE を返します。ただし、この関数は現在のセッションに関連する変数を解放したり、クライアント Cookie に保存されたセッション ID を削除したりしません。 session_start() 函数 (创建 Session 文件),session_destroy()函数用来关闭 Session 的运作 (删除 Session 文件),如果成功则返回 TURE,销毁  Session 资料失败则返回 FALSE。但该函数并不会释放和当前 Session 相关的变量,也不会删除保存在客户端 Cookie 中的 Session ID 。

PHP默认的 Session 是基于 Cookie的,Session ID 被服务器存储在客户端的 Cookie 中,所以在注销 Session 时也需要清除 Cookie 中保存的 Session ID,而这就必须借助 setcookie() 函数来完成。 在 Cookie 中,保存 Session ID 的  Cookie 标识名称就是 Session 的名称,这个名称是在 php.ini中,通过 session.name 属性指定的值。在php脚本中,可以通过 session_name() 函数获取 Session 的名称。 删除保存在客户端  Cookie 中的 Session ID。

前面的讲解可以总结出 Session 的删除和注销过程需要好几个步骤。下面将通过一个实例,提供完整的代码,运行该脚本后就可以关闭 Session,并销毁与本次会话有关的所有资源。

彻底销毁Session代码如下所示:

<?php
  //开启 Session
  session_start();
  // 删除所有 Session 变量
  $_SESSION = array();
  //判断 cookie 中是否保存 Session ID
   if(isset($_COOKIE[session_name()])){
     setcookie(session_name(),&#39;&#39;,time()-3600, &#39;/&#39;);
  }
  //彻底销毁 Session
  session_destroy();
?>

注意:使用 $_SESSION = array() 清空 $_SESSION数组的同时,也将这个用户在服务器端对应的  Session 文件内容清空。而使用  session_destroy()

PHP のデフォルトのセッションは Cookie に基づいており、セッション ID はサーバーによってクライアントの Cookie に保存されるため、セッションからログアウトするときは、Cookie に保存されているセッション ID もクリアする必要があります。これは setcookie() 関数の助けを借りて行われます。 Cookieでは、セッションIDを保存するCookie識別名がセッションの名前になります。この名前は、php.iniのsession.name属性で指定した値です。 PHP スクリプトでは、セッションの名前は session_name() 関数を通じて取得できます。 クライアントのCookieに保存されているセッションIDを削除します。

これまでの説明では、セッションの削除とログアウトのプロセスにはいくつかの手順が必要であると結論付けることができます。以下に、例を通して完全なコードを示します。スクリプトを実行した後、セッションを閉じることができ、このセッションに関連するすべてのリソースが破棄されます。 セッションを完全に破棄するコードは次のとおりです:

rrreee
注: $_SESSION = array() を使用して $_SESSION 配列をクリアし、また削除します。このユーザーのサーバー側の対応するセッション ファイルの内容はクリアされます。 session_destroy() 関数を使用すると、サーバー側でこのユーザーに対応するセッション ファイルが削除されます。 🎜🎜🎜🎜関連トピックの推奨事項🎜: 🎜phpセッション🎜 (写真、テキスト、ビデオ、ケースを含む)🎜🎜

以上がPHPでセッションを削除および破棄する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。