session会话默认是基于cookie的,如果cookie被禁止的话则通过url传递
通过url传递时:
常量SID 是判断用户是否 有session_id的值 ,没有此常量就为 session_name()=session_id()格式的字符串,否则为空串"" 。
在php.ini配置文件中session.use_only_cookies = 1(非0为真,0为假) 设置为1的话,则服务器默认为发送服务器的链接添加session_name()=session_id()
这个配置在linux服务器上没有问题,window服务器上有点问题,用时需要注意!
$sid = $_GET["session_id()"];//意思是通过url获取传过来的session_id值
session_id($sid);这样的话,session会获取这个session_id在服务器端存储的内容,这个必须在session_start()之前调用
删除session:
unset($_SESSION) 是删除整个session数组,以后就不能在使用它了,即当前session_id对应的内容和session_name都被在内存中清除了
$_SESSION=array(); //这样以后可以再赋值session数组,即当前session_id对应内存中的内容被清空了,session_name赋了空值
释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session_id
session_destroy()
删除当前用户对应的session文件以及释放session_id,内存中的$_SESSION变量内容依然保留
程序代码
<?php
session_start(); //这个必须开启,才能删除session变量
unset($_SESSION["name"]);//删除单个session变量
if(isset($_COOKIE[session_name()]))
{
setcookie("name","",time()-3600,"/");//删除客户端session_id();
}
session_destroy();
?>
javascript的cookie操作:
js 操作cookie是,cookie的键名和值不能出现,;=和空格,需用 escape()转码。
var exp = new Date();
exp.setTime(exp.getTime() + 24*60*60*1000);
document.cookie='name='+new Array('a','b','c')+';path=/;expires='+exp.toGMTString();
js设置cookie时,一个变量对应一个cookie值,即document.cookie='name=hello;password=world;path=/;expires='+exp.toGMTString(); 不正确默认只取name值
正确的是
document.cookie='name=hello;path=/;expires='+exp.toGMTString();
document.cookie='password=world;path=/;expires='+exp.toGMTString();
alert(document.cookie); 值为: name=hello;password=world