PHP-会话技术

1 概述

会话技术指的是当一个浏览器与服务器在进行对话的期间(浏览器没有关闭),各个请求不同的脚本间可以共享一些数据,这种技术就称之为会话技术。

常用的会话技术有两种:
  1.Cookie技术:将数据保存在浏览器上,可以在不同的PHP脚本之间共享浏览器上的数据
  2.Session技术:将数据保存在服务器端,可以在不同的PHP脚本之间共享服务器端的Session数据

2 Cookie技术

Cookie是一种由服务器发送给客户端的片段信息,存储在客户端浏览器的内存或者硬盘上;在浏览器发起请求时,通过HTTP请求的头部,将这些片段信息传回到服务器。

2.1 服务端向客户端添加Cookie

PHP中,设置Cookie的函数是:

function setcookie ($name, $value = "", $expire = 0, $path = "", $domain = "", $secure = false, $httponly = false)
setcookie('isLogin', '1', time() + 3600);

设置数组

setcookie('user[username]', 'Lucy');
setcookie('user[password]', '123456');

2.2 服务端读取Cookie

$_COOKIE['username']

2.3 服务端删除客户端Cookie

    $expirtTime = time() - 3600;
    setcookie('username', '', $expirtTime);

3 Session技术

Cookie技术是在用户客户端的计算机保存资料,所以会引起巨大的争议,用户有权阻止Cookie的使用,使得服务器无法通过Cookie来跟踪用户。

Session技术是将用户的相关数据放在服务器,服务器会为用户创建一个Session ID,它是一个32位十六进制的字符串。

使用Session跟踪一个用户,是通过在各个页面中间传递Session ID,并通过Session ID在服务器获得对应的数据。常见的Session ID传送方法有两种:
  1.基于Cookie的方式传递Session ID
  2.通过URL参数进行传递

3.1 Session的声明和使用

使用Session技术,必须先调用session_start()函数,将相关的环境变量预先加载。这个函数有两个主要作用:
  1.开始一个会话
  2.返回已经存在的会话

bool session_start ([ array $options = [] ] ) //PHP 7.0,The options parameter was added.

3.1 Session的写和读

在调用session_start()函数之后,就可以操作$_SESSION全局数组。

$_SESSION['username'] = 'admin';

$username = $_SESSION['username'];

3.2 Session注销

Session注销分成4个步骤:
  1.开启Session
  2.删除所有的Session变量
  3.删除储存在客户端的Session ID
  4.删除储存在服务端的Session文件

可以使用unset()函数来释放单个 变量,也可以赋值一个空数组,删除所有的变量

unset($_SESSION['username']);

$_SESSION = array();

如果Session是基于Cookie的,也需要清除Cookie中保存Session ID。

   if (isset($_COOKIE[session_name()])) {
        //路径一定要和php.init设置的一致
        setcookie(session_name(),'', time() - 3600,'/');
    }

删除Session文件

session_destroy();

最终Session的注销方法:

function clearSession() {
    session_start();
    $_SESSION = array();
    if (isset($_COOKIE[session_name()])) {
        //路径一定要和php.init设置的一致
        setcookie(session_name(),'', time() - 3600,'/');
    }
    session_destroy();
}

参考文章

前端必备HTTP技能之cookie技术详解:https://www.jianshu.com/p/2ceeaef92f20

你可能感兴趣的:(PHP-会话技术)