1.setcookie
2.header ( string $string [, bool $replace = true [, int $http_response_code ]] ) 通常只用到第一个参数string
header("Set-Cookie:name=value;[expires=date;][path=path;][security;][httponly;]");
比如header("Set-Cookie:cookie=cookietest;expires=".(time()+10).";path='/';security;");
注意字符串的拼接。比如"abcd=".function()."efgh"
3.数组定义现在常用
$test=[
"1"=>"asda",
"2"=>"asdsadas",
"3"=>"qwewqe"
];
4.session 默认session_id及对应数据通过cookie存储!!!
(1)会话:服务器和浏览器保有的共同小秘密的这段时间
准备建立会话的时候,服务器会分析浏览器的请求,看里面是否有session_id,若没有,则创建一个并赋值,然后传给浏览器,一般会被浏览器保存在cookie中。之后浏览器再去访问服务器时,会携带session_id,服务器就可以认识浏览器了。
服务器会为每个session_id创建session文件,存放一些会话数据.每次浏览器访问服务器都会根据session_id认领自己的信息。
(2)开启会话 session_start();
(3)读取和设置会话数据 $_SESSION全局变量(是个数组)
session_start();
if(isset($_SESSION['views'])){ $_SESSION['views']=$_SESSION['views']+1;}
else{ $_SESSION['views']=1;}
echo "浏览量:". $_SESSION['views'];?> //每刷新一次,浏览量+1 views不是session_name,session_name默认是PHPSESSID,在php.ini中配置
(4)销毁 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
session_start();if(isset($_SESSION['views'])){ unset($_SESSION['views']);}?>
您也可以通过调用 session_destroy() 函数彻底销毁 session:
session_destroy();?>
注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
(5)用setcookie()来设置session的过期时间
setcookie(session_name(),session_id(),time()+3600); //session_id()返回所有session的id,而session_name都相同。name与id相同,过期时间不同,则就是不同的session。如图
(6)session的会话配置选项
php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):
1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;
2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值是“PHPSESSID”;
3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用!
4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!
(7)当cookie被禁用 怎么使用session?传递session_id(url中的? 作用与$_GET---参数传递)
什么是$_GET
通过 URL 参数传递给当前脚本的变量的数组。
课程上的例子按下图所示写法,这个超链接写法有难度,注意赋值给href的是一大串字符串,会跳转到dump1.php页面,该页面的URL有用 ?连接的参数,即sessionid与sessionname
要在dump1.php中获取URL的参数,必须用$_GET全局变量。图中session_id()函数用于设置该session_name对应的id。
8.会话销毁
9.自定义会话处理器 ,,可以自定义会话存储函数来将会话数据存储到数据库。shuhttps://www.imooc.com/video/15867
SessionHandlerInterface {
/* 方法 */
abstract public close ( void ) : bool
abstract public destroy ( string $session_id ) : bool
abstract public gc ( int $maxlifetime ) : int
abstract public open ( string $save_path , string $session_name ) : bool
abstract public read ( string $session_id ) : string
abstract public write ( string $session_id , string $session_data ) : bool
}
session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc [, callable $create_sid [, callable $validate_sid [, callable $update_timestamp ]]] ) : bool