<?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);
?>
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
实现无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方式