B/S请求响应模式是无状态的。任意的请求间不存在任何的联系,不能将请求状态保持下去。会话技术可以给每个浏览器分配持久数据,这些数据不会随着一次请求和相应结束而销毁。
cookie是一种允许服务器端脚本在浏览器端存储数据的技术。
cookie特点:
setCookie(KEY, VALUE, [有效期(时间戳表示)], [有效路径], [有效域], [是否仅安全传输], [HTTPONLY])
==setCookie()前不能存在任何的输出==
KEY:
设置成数组形式(user[name])在浏览器保存时是字符串,获取时被php整理成数组。
有效期:
有效路径:
有效域:
是否仅安全传输:
HTTPONLY:
setCookie(‘is_click‘, ‘true‘, time()+3600*24*30, ‘/‘, ‘.kongciyuan.com‘, false, true);
setCookie(KEY, 新VALUE, 新[有效期(时间戳表示)], 新[有效路径], 新[有效域], 新[是否仅安全传输], 新[HTTPONLY])
setCookie(‘is_click‘, ‘false‘, time()+3600*24*30, ‘/‘, ‘.kongciyuan.com‘, false, true);
标准做法:setCookie(‘KEY, ‘‘, time()-1)
还可以使用:setCookie(KEY, ‘‘)或setCookie(KEY)
使用超全局数组变量:$_COOKIE
浏览器在向服务器发送请求时,会检测cookie的是否有效,只有没有过有效期的cookie数据请求时,才会携带。
将数据存储在服务器端,浏览器只储存sessionid
使用session_starat();函数,或在php.ini中设置session.auto_start = 1自动开启session
==session_start()函数前不应该有输出==
通过对$_SESSION数组操作就完成对SESSION的操作。
完全整删除session全部数据:
//数据区,$_SESSION全局数组,存sessionid的cookie
Session_destroy();
unset($_SESSION);
setCookie(session_name(), ‘‘, time()-1);
清空session数据:
不要:unset($_SESSION); 使用:$_SESSION = array();
session属性特征由浏览器的cookie中存储的sessionid决定
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_secure =
session.cookie_httponly =
使用函数session_destroy():删除当前session对应的数据区,关闭session机制(关闭session机制后,余下的session操作都不处理)
session销毁只将持久化的session清除了,$_SESSION变量是不会自动消失的。
注意:
<?php
//配置session存储机制
ini_set(‘session.save_handler‘, ‘user‘);
//设置session处理器
//session_set_save_handler(开始函数, 结束函数, 读函数, 写函数, 删除函数, 垃圾回收函数)
session_set_save_handler(
‘userSessionBegin‘,
‘userSessionEnd‘,
‘userSessionRead‘,
‘userSessionWrite‘,
‘userSessionDelete‘,
‘userSessionGC‘
);
echo ‘start‘.‘</br>‘;
session_start();//执行userSessionBegin,userSessionRead
echo ‘</br>‘.‘set‘.‘</br>‘;
$_SESSION[‘user‘] = ‘root‘;//没有使用函数
echo ‘</br>‘.‘get‘.‘</br>‘;//没有使用函数
$_SESSION[‘user‘];
echo ‘</br>‘.‘del‘.‘</br>‘;
session_destroy();//使用session_destroy()执行userSessionDelete,否则执行userSessionWrite
function userSessionBegin() {
echo ‘userSessionBegin‘.‘</br>‘;
}
function userSessionEnd() {
echo ‘userSessionEnd‘.‘</br>‘;
}
function userSessionRead() {
echo ‘userSessionRead‘.‘</br>‘;
}
function userSessionWrite() {
echo ‘userSessionWrite‘.‘</br>‘;
}
function userSessionDelete() {
echo ‘userSessionDelete‘.‘</br>‘;
}
function userSessionGC() {
/*
概率分子:session.gc_probability = 1
概率分母:session.gc_divisor = 1000
session最长时间:session.gc_maxlifetime = 1800
*/
echo ‘userSessionGC‘.‘</br>‘;
}
会话跟踪:主要解决HTTP的无状态问题,即:当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户
http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!