【www.gdgbn.com--php安全】
session基本操作 添加 修改 session项 session.add("test", datetime.now);session["test"] = datetime.now; 添加和修改session的方法是一样的,当指定的session标识不存在时,系统会添加。当存在时系统会更新。 删除 session项 session.remove("test"); 不要使用session["test"] = null; 这样只是将值设置为null! 移除所有session项 session.clear(); 或 session.removeall(); 终止当前会话状态 session.abandon(); 当前session项数量 session.count 当前sessionid session.sessionid session何时创建 所有浏览器(ie、chrome、firefox)当第一次打开浏览器时(当前未运行浏览器时),服务器端会创建新的session。 ie浏览器,当已有浏览器运行时,打开新的浏览器则会创建新的session。 而chrome、firefox当已有浏览器运行时,打开新的浏览器不会创建新的session。 当session过期后,继续访问时会创建session。当session创建时会触发 global.asax 中的session_start方法。 session何时过期 代码 session.abandon(); 引起session过期。 session超时,自动过期。 web.config 被修改,将会过期。 iis的应用程序池被回收引起。 当session过期时会触发 global.asax 中的session_end方法。 奇怪的问题: session.abandon(); 和 session超时自动过期的效果是一样的。引起的过期后,当刷新页面时会执行session_start 和 session_end方法。 如何避免在session_start 中添加session["sessionstartdatetime"] = datetime.now; 在调用session.abandon();后执行response.cookies.add(new httpcookie("asp教程.net_sessionid", ""));让sessionid重置。 session过期时间 在web.config中设置
function updatesession(){
$.get("/ajax/updatesession.aspx");
}
window.setinterval(updatesession, 60000);
</script> 建立一个空页面updatesession.aspx 注意在page_load中添加 注意当ajax请求aspx页面时,aspx页面应设置为不允许缓存! protected void page_load(object sender, eventargs e)
{
response.appendheader("pragma", "no-cache");
response.appendheader("cache-control", "no-cache, must-revalidate");
response.appendheader("expires", "0");
} 关于sessionid 当session过期后,sessionid并未改变。 调用 response.cookies.add(new httpcookie("asp.net教程_sessionid", "")); 可设置sessionid 当设置为空时,服务器端会创建新的session。而老的session并未被释放。 当设置为其他已有的sessionid值时,此时的session将获取的是指定的session。这就是session劫持了。 如何统计当前网站session个数。 创建类 view sourceprint?
public
class
constants
{
///
/// 当前session个数
///
public
static
int
sessioncount = 0;
///
/// 累计session个数
///
public
static
int
sessionallcount = 0;
}
在global.asax中添加
view sourceprint?
void
session_start(
object
sender, eventargs e)
{
constants.sessionallcount++;
constants.sessioncount++;
session[
"sessionstartdatetime"
] = datetime.now;
}
void
session_end(
object
sender, eventargs e)
{
constants.sessioncount--;
}