session是PHP中的预定义变量之一,用于存储关于用户会话信息,或者更改用户会话的设置。

session特点:

1、用户访问网站时,由服务器自动创建
2、用户离开网站时,由服务器自动销毁
3、访问网站的每个用户,都有一个独立的session
4、Session只能存储单一用户信息
5、session中存储的信息。在网站中所有页面均可访问
6、session以文本文件格式,存储在服务器端

session工作机制:

服务器访问网站的每个用户时,创建一个唯一的session_id,并基于这个session_id以文本文件的形式来存储用户会话的信息。

session工作机制图解:

用户打开浏览器,通过域名访问指定网站
👇
服务器为用户创建唯一的session_id
👇
服务器以session_id为名,创建session文件(文本文件)
👇
服务器在给当前用户的session文件中,存取用户信息

开启session

session在使用之前必须先开启,在PHP中,可以通过session_stsrt()函数开启session。

  1. <?php
  2. header("content-type:text/html;charset=utf-8");
  3. session_start();
  4. //通过此函数开启session
  5. echo session_id();
  6. //通过session_id()函数,获得当前用户的session_id。

注意:在session_start()函数之前,不能有任何形式的输出。

使用Session

通过预定义变量$_SESSION,可以实现session的存值和取值。

<?php
header("content-type:text/html;charset=utf-8");

session_start();

$_SESSION["userName"] = "张三";
$_SESSION["age"] = 30;
//将数字 30 存储到 Session 中,对应的 Session 名称为 age 

echo "Session中的用户名:{$_SESSION["userName"]}<br/><br/>";
echo "Session中的年龄:{$_SESSION["age"]}";

注意:Session可以存储任意类型的值;Session 中存储的数据,可以跨页面访问。

销毁Session

销毁session可以清楚session中存储的值。
PHP中可以通过 unset() 函数和 session_destroy() 函数来销毁session数据。

unset()函数

unset()函数可以销毁session中的指定数据。

<?php
header("content-type:text/html;charset=utf-8");

session_start();

$_SESSION["userName"] = "张三";
$_SESSION["age"] = 30;

unset($_SESSION["userName"]);
// 通过 unset() 函数,销毁 Session 中名称为 userName 的数据。
print_r($_SESSION);

注意:通过 unset() 函数可以销毁任意数据。

session_destroy()函数

该数据的实现原理,是将session对应的文本文件删除。
该函数并没有清空预定义变量$_SESSION中的数据,所以下面的示例在运行时,仍然会有输出结果。但是在浏览器页面跳转后,当我们再次获得session中的数据时,会发现session中的数据已被清理。

<?php
header("content-type:text/html;charset=utf-8");

session_start();

$_SESSION["userName"] = "张三";
$_SESSION["age"] = 30;

session_destroy();
// 通过 session_destroy() 函数,销毁 Session 中所有数据。
print_r($_SESSION);