防守打法

1、设置Cookie,【基于内存的Cookie】

setcookie('Username','tinywan');
setcookie('Age','24');

2、查看Cookie存储位置:

3、读取一个Cookie,(Cookie数据保存在$_COOKIE这个预定义变量中)

print_r($_COOKIE);

打印结果

4、关闭浏览器,重新读取,刚才设置的Cookie已经消失,原因:该Cookie是基于内存的

二、过期时间

1、设置一个过期时间

setcookie('Apple',7878,time()+30);
setcookie('Apple123',7878-60,time()+60);
setcookie('Apple888',7878-3600,time()+3600);

2、Https

setcookie('Http-Cookie001','Http',time()+3600,'/','',false);    // 只在http设置
setcookie('Https-Cookie002','Https-Values',time()+3600,'/','',true); //只有在https协议下才会设置

三、更新和删除Cookie

四、header设置Cookie

header('Set-Cookie: age=26');

存储的Cookie

响应头部

2、一个格林过期时间

header('Set-Cookie: set-age-expire=26;expires='.gmdate('D, d M Y H:i:s \G\M\T',time()+3600));

header('Set-Cookie: set-name-https=Tinywan;secure;expires='.gmdate('D, d M Y H:i:s \G\M\T',time()+3600).'; domain=.tinywan.com');

3、数组方式设置

setcookie('UserTable[Name]','Tinywan',time()+3600);
setcookie('UserTable[Age]','24',time()+3600);
setcookie('UserTable[Email]','756684177@qq.com',time()+3600);

五、通过JS设置和读取Cookie

1、直接打印

2、代码获取

/**
* Created by tinywan on 2017/11/16.
*/
var Cookie = {
set: function (key, val, expiresDays) {
// 判断是否设置expiresDays
if (expiresDays) {
var date = new Date();
date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000); // 格式化时间
var expiresStr = 'expires=' + date.toGMTString() + ';';
} else {
var expiresStr = "";
}
//escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
document.cookie = key + '=' + encodeURI(val) + ';' + expiresStr;
},
get: function (key) {
// "Apple888=4278; autoLogin=1; auth=1; auth-root=1; age=26; set-age=26; set-age-expire=26; set-age-expire=26; set-name-https=Tinywan; UserTable[Name]=Tinywan; UserTable[Age]=24;"
// decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
var cookieStr = document.cookie.replace(/[]/g, ''); //空格全局替换为空
// 把字符串拆分为一个数组
var cookieArr = cookieStr.split(';');
var res;
for (i = 0, len = cookieArr.length; i < len; i++) {
console.log(cookieArr[i]); // age=26
var arr = cookieArr[i].split('=');
if (arr[0] == key) {
res = arr[1];
break;
}
}
return decodeURI(res);
}
};

测试

四、Session 回话控制

1、回话图

(1)第一次请求(准备回话的时候),PHP首先会检查请求头中是否包含session_id,如果没有,则服务器会在自己的内存里创建一个变量$seeesion_id.

(2)服务器会把这个$session_id变量发送到浏览器保存,浏览器一般会把这个id保存在Cookie中

(3)以后的用同一个浏览器再次访问服务器的时候,都会在浏览器HTTP请求头中就会携带Cookie存储的变量$session_tinywan

(4)服务端的$session_id变量可以存放任意序列化后的数据。

(5)每次浏览器访问服务器,都可以凭借自己的session_id到服务器的这个变量中获取自己的session变量中存储的信息了

(6)如果想销毁回话,可以删除回话中的数据,销毁回话文件。

2、第一次访问

DEMO001

        // 可以通过调用函数 session_start() 来手动开始一个会话
session_start();
// 设置session数据
$_SESSION['name'] = 'Tinywan';
$_SESSION['age'] = 24;
$_SESSION['Github'] = 'github.com/Tinywan';
echo "Session 的名字:",session_name(),"<br/>";
echo "Session id:",session_id(),"<br/>";
// 获取session中的数据
var_dump($_SESSION);
return 1;

请求头中会携带一个cookie

2、设置一个过期时间

session_start();
$_SESSION['cookie_name'] = 'Cookie';
$_SESSION['cookie_time'] = "1小时";
//保存一个数组
$data =[
'id'=>1002,
'age'=>24,
'name'=>"Tinywan"
];
$_SESSION['user1002'] = $data;
// 设置Session 保存周期
setcookie(session_name(),session_id(),time()+3600);
print_r($_SESSION);

Array
(
[name] => Tinywan
[age] => 24
[Github] => github.com/Tinywan
[cookie_name] => Cookie
[cookie_time] => 1小时
[user1002] => Array
(
[id] => 1002
[age] => 24
[name] => Tinywan
) )

3、传递session_id

最新文章

  1. .NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)
  2. oracle sql改写
  3. Codeforces Round #216 (Div. 2) E. Valera and Queries 树状数组 离线处理
  4. 仅当使用了列的列表并且 IDENTITY_INSERT 为 ON 时,才能为表&#39;SpeType&#39;中的标识列指定显式值
  5. hyper-V 装ubuntu15.04
  6. POJ 2175 spfa费用流消圈
  7. 碎碎念,浅饮-------Day30
  8. (@WhiteTaken)UGUI中遇到的一些细碎的知识点
  9. Head First 设计模式 第4章工厂模式
  10. cat/tac/more/less 命令详解
  11. win10想开测试模式,提示“设置元素数据时出错
  12. 轴对称 Navier-Stokes 方程组的点态正则性准则 II
  13. Django的模板语言
  14. topcoder srm 565 div1
  15. hdu2594 Simpsons&#39; Hidden Talents【next数组应用】
  16. SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
  17. 无损压缩PNG工具
  18. Mysql 大量数据导入
  19. 由于OBJ模型的读取引起的Release无问题Debug卡死问题
  20. python 同步与异步性能区别

热门文章

  1. Linux下安装oracle的过程
  2. Node fs模块同步读取写入追加
  3. QC
  4. python 时间转换相关
  5. UOJ #76 【UR #6】懒癌
  6. HDU - 1160 (FatMouse&#39;s Speed )最长上升子序列
  7. Gym 100971J-Robots at Warehouse
  8. Java_io体系之RandomAccessFile简介、走进源码及示例——20
  9. Arch Linux中禁用UTC解决双系统时间问题
  10. AtCoder Regular Contest 067 F - Yakiniku Restaurants