<?php
    #Session使用需要开启session_start
    session_start();
    #设置SESSION信息
    $_SESSION['name']='Mark';
    $_SESSION['name2']='张三';
    $_SESSION['name_arr']=array('王五','赵六');
    #读取SESSION信息
    echo $_SESSION['name'];
    echo $_SESSION['name2'];
    echo '<hr/>';
    var_dump($_SESSION);
    echo '<hr/>';
    #删除一个SESSION信息
    unset($_SESSION['name_arr']);
    var_dump($_SESSION);
    echo "<hr/>";
    #删除全部的SESSION信息  删除全部数据就是让$_SESSION变成一个空数组
    $_SESSION=array();
    var_dump($_SESSION);


?>

dFnilD.png

SESSION销毁

原理:系统提供一个函数:session_destroy(),会自动根据session_start()得到的sessionID去找到指定的session文件,并把其删除。

//销毁session
session_destroy();

垃圾回收机制

session.gc_maxlifetime = 1440:规定的session文件最大的生命周期是1440秒,24分钟
session.gc_probability = 1:垃圾回收概率因子(分子)
session.gc_divisor = 1000:垃圾回收概率分母
网站访问量大的话,可以把分母调高一些,一般没必要默认的触发概率是1/1000

dEs3gP.png

dEsYDS.png

实现无COOKIE使用SESSION

方案1:可以利用PHP提供的session函数:session_id()和session_name()来获得和设置sessionID或者name从而解决session_start产生新sessionID的情况(手动操作):

<?php
    session_start();
    $id=session_id();
    $name=session_name();
    echo $name .'='.$id;
    $_SESSION['name']='付强';
    echo "<br/>";
    echo "<a href=\"stopWordCookie_Session2.php?{$name}={$id}\">点击</a>"

?>

<?php
//访问session
//接收数据
$name=session_name();
$id=$_GET[$name];
//设定sessionID
session_id($id);
//开启session
session_start();
//访问
var_dump($_SESSION);
?>

方案2:可以利用session机制中已经提供的解决方案自动操作(配置)
原因1:默认session配置只允许使用COOKIE保存sessionID
原因2:默认关闭了其他能够传送数据的方式,只保留了COOKIE

修改PHP配置文件,开启其他方式传输sessionID,关闭只允许使用COOKIE传输功能

请输入图片描述

请输入图片描述

一旦配置开启,PHP会自动将sessionID和session名字在其他位置绑定数据,同时还会在session_start的时候,考虑其他方式传递(表单、url等)的数据,而不是只有COOKIE方式