前言
会话支持在 PHP 中是在并发访问时由一个方法来保存某些数据.从而使你能够构建更多的定制程序 从而提高你的 web 网站的吸引力.
cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。
正文
Cookie
Setting new cookie
=============================
<?php
setcookie("name","value",time()+$int);
/*name is your cookie's name
value is cookie's value
$int is time of cookie expires*/
?>
Getting Cookie
=============================
<?php
echo $_COOKIE["your cookie name"];
?>
Updating Cookie
=============================
<?php
setcookie("color","red");
echo $_COOKIE["color"];
/*color is red*/
/* your codes and functions*/
setcookie("color","blue");
echo $_COOKIE["color"];
/*new color is blue*/
?>
Deleting Cookie
==============================
<?php
unset($_COOKIE["yourcookie"]);
/*Or*/
setcookie("yourcookie","yourvalue",time()-1);
/*it expired so it's deleted*/
?>
Session
基本用法
创建
session_start();
$_SESSION['name'] = "draymonder";
如果要取出对象,则需要实现申明一下类的定义信息
删除
unset($_SESSION['name']);
使用时候要开启
session_start();
session_unset 和 session_destroy之间的区别
session_unset只是清除sesison的使用。 会话仍在用户计算机上。 请注意,通过使用session_unset,该变量仍然存在。
然而,使用session_unset与session_destroy一起使用,实际上是清除数据的更有效方法。 正如上面的例子所述,这个工作非常好,跨浏览器:
session_unset();
session_destroy();
如果客户端禁用Cookie 怎么实现session共享多个页面?
一、 利用http协议传送SSID=sessinId()
if(isset($_GET['SSID'])) {
//设置session_id
session_id($_GET['SSID']);
}
session_start();
二、 利用常量SID来传送
session_start();
echo SID;
经过测试
SID是第一次访问站点的时候有的内容
再次访问的时候为空
demo中控制非法入侵
在loginProcess.php中
判断账号密码正确的操作中 设置Session
然后在后台页面依次验证
然后考虑退出的时候(暂时只想到了手动点击退出页面
<a href="empProcess.php" >安全退出</a>
然后empProcss.php中如果没有接收到flag就说明是退出操作
退出就清除Session
session_unset();
session_destroy();
Cookie 和 Session
php.ini 中的设置
session_name
设置session的名字
session.save_path = 路径
网站session目录文件
session.gc_maxlifetime = 1440
最大生命周期
session.gc_probability = 1
session.gc_divisor = 1000
一定概率垃圾回收
session.cookie_lifetime = 0
cookie默认生命周期,默认是0
当关闭浏览器后,该cookies生效
session_set_save_handler
( callable $open , callable $close , callable $read ,
callable $write , callable $destroy , callable $gc [, callable $create_sid ] )
可自定义 $open $close $read $write $destroy $gc
区别
Cookie是传送给客户端的
Session是写到服务端的,并且创建Session时候传回的一个Cookie-SID