一、session生命周期
如果客户端没有禁用cookie,cookie在启动session会话的时候扮演的是存储sessionID和session生存期的角色。我们来手工设置session的生存周期:
<!--方法一:直接用cookie设定-->
<?php
session_start();
$lifeTime = 24*3600;
setcookie(session_name(),session_id(),time()+$lifeTime,"/");
?>
<!--方法二:php5提供函数-->
<?php
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
?>
二、session基本用法:
<?php session_start(); if(isset($_SESSION['view'])){ $_SESSION['view'] = $_SESSION['view']+1; }else{ $_SESSION['view'] = 1; } $view = $_SESSION['view'];// 最好先赋值再引用sesion变量 echo "$view"; unset($_SESSION['view']);
session_unset($_SESSION['view']);//或者用phpsession_unset这类方法
unset($_SESSION);//或者这类方法,全部删除 session_destroy(); ?>三、防止session伪造
<?php //session安全1 //泄露出的sesionID使得截获者能够伪造sessionID访问ID关联资源,第一url携带会话ID。如果连接到外部站点,包含会话ID的url会被存放在外部站点refer //日志里。第二:较主动的攻击者会监听网段数据包,如果没有加密,会话ID会以明文方式在网络中流过。 //避免会话ID泄露,防止伪造的解决思路 if(!isset($_SESSION['user_session'])){ $_SESSION['user_session'] = $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']; }elseif($_SESSION['user_session'] != $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']){ session_regenerate_id(); } //方法二:会话数据放置一个标识变量,区分是合法还是伪造的 session_start(); if(!isset($_SESSION['is_create'])){ session_regenerate_id(); $_SESSION['is_create'] = TRUE; } ?>四、cookie用法//第一:coolie用法
<?php //创建cookie $expire=time()+60*60*24*30; setcookie("user","lisheng"); echo $_COOKIE["user"]; setcookie("user","lisheng",$expire); //删除cookie setcookie("name","",time()-3600); ?>
//第二:coolie数组用法
<?php setcookie("cookie3[name]","lisheng",time()+3600); setcookie("cookie3[age]","30",time()+3600); setcookie("cookie3[sex]","man",time()+3600); if(isset($_COOKIE['cookie3'])){ foreach($_COOKIE['cookie3'] as $name=>$value){ echo "$name:$value"; } } ?>