cookie 和 session

http原理

1.php

$user = 'admin';
echo $user;

2.php

//如何在这个页面 获取1.php的$user的值
echo $user;

知道: 无论是什么变量,在php中是无法跨越到另一个页面的
那如何像会员登录一样,每个页面都可以获取这个变量

需要⽤cookie
cookie是浏览器在和它配合,共同达到这样一个效果

http原理的⻆度来说:
浏览器敲回车,访问一个页面,这是个请求,且会带着一些我们无法直观的东西去请求
网卡沿着网线连接到服务器的⽹卡上,打开了它的80端口,双方建立了一个这样的连接,就像个通
道一样
apache ---> 开始相应,响应你登陆成功,同时会响应给我们一些眼睛无法直观看到的东西,暗号,把
admin这个
暗号给了我们的浏览器,浏览器拿到这个暗号,会将它存起来
请求--->相应,这次请求彻底结束,他俩的连接网卡就这样断开了,不再有任何关系 下次,浏览器再
去请求其他的页面。
此时,浏览器会带着暗号,admin过去连接apache

 

如何给浏览器一个暗号?

 

用firebug 查看1.php的网络(响应头信息,请求头信息)和cookies
2.php是易个空白的页面,同样用firebug查看网络和cookie 对比两个php页面的 -> 请求头信息
发现在2.php 里的请求头信息是带着 1.php的 cookie去请求的
就像吃饭时凭票取饭是一样的 那如何在2.php 取出它的cookie值?
php会捕捉到你带过来的cookie值,把它放在一个cookie数组里 $_COOKIE 它是以个超全局变量,可以
直接使用

2.php

1 print_r($_COOKIE);

php变量是没法跨页面的,之所以我们能达到这个效果,是因为浏览器每次都会在请求头信息中将这
个变量带过来。

cookie 语法

1.php

1 setcookie('sec' , '!!!' , time()+10);

2.php

print_r($_COOKIE);

如果不加第3个参数,那么它的有效期是多久 1.php

1 setcookie('sec' , '!!!' , time()+60);
2 setcookie('test' , '888' );

关闭浏览器,查看2.php的效果 如果不加第3个参数,表示关闭浏览器就失效 setcookie的第4个参数,代表
cookie的有效路径
上层目录新建 test.php 放在1.php的上级,看能不能打印出值

1 print_r($_COOKIE);

cookie默认是在当前目录下有效,如果是这样,⼤型的⽹站⽆法做到全站登录 cookie,可以往下级目录识
别,往上级目录跳没办法

1.php

setcookie('sec' , '!!!' , time()+60);
setcookie('test' , '888' );
setcookie('test2' , '666' , time()+60 , '/');

第5个参数,不常用,cookie是不能跨域的,可以在不同的子域名中生效 大的网站,往往有很多子域名,如果
让cookie 在不同的子域名中生效 book.163.com
mil.163.com
lady.163.com 指定到确定的位置去取出cookie

setcookie('test2' , '666' , time()+60 , '/' , '163.com');

如何删除或者清空cookie?
注意:无论是设置,修改,销毁cookie,都需要用到setcookie

setcookie('name' , null , 0);

session原理

cookie -> 服务器给浏览器的一个小票, 存储在浏览器中 那session是什么?
人去超市 -> 客户
超市的储物箱 -> 给人提供服务[存储物品给客户一个小票]
人拿箱子提供的小票 -> 取出箱子内的物品

在这个过程中
1.重要的信息放在哪里?
服务器端
2.浏览器拿箱⼦的号,是⽤什么记住这个号的,每次来访问服务器⽤什么带着这个号来的?
cookie

所以说,cookie和session是有联系的

session语法

1.php 无论是设置,读取,销毁session,需要先开启session

session_start();

开启session之后,可以直接写session变量

1 session_start();
2 $_SESSION['area'] = 'beijing';

1.php

1 session_start();
2 print_r($_SESSION);

清除所有cookie -> 运行1.php -> 查看wamp/tmp和firebug下的cookie
1.php firebug下的cookies -> 多了一个cookie 名称是PHPSESSID 内容是一串字符串
这以长串内容就是箱子号
箱子里的内容真的存储起来了吗

客户 -> 浏览器 超市 -> 服务器
小票上的号 -> cookie的内容 箱子 -> wamp/tmp 下的⽂件 箱⼦⾥的东⻄ -> wamp/tmp/ 下对应文件
的内容 $_SESSION
为什么箱子的号是一串乱码? 它必须是一串乱码,因为cookie的名称是PHPSESSID,它的内容(箱子号) 如
果再不乱的话,是非常容易伪造的.

session语法细节

1.session无论是读取,修改,销毁 都要先session_start();
2.session的读取,修改,销毁,可以直接操作$_SESSION数组
3.session销毁
1)$_SESSION = array(); 2)session_destroy();
销毁更彻底,彻底删除session文件
在php.ini搜索"session",可找到相关配置项 session的存储路

session.save_path = "c:/wamp/tmp"

是否使用cookie(来传递session_id)

1 session.use_cookies = 1

session_id的cookie名称

1 http://php.net/session.nam
2 session.name = PHPSESSID

是否自动session_start

 

1 ;http://php.net/session.auto-start
2 session.auto_start = 0

session_id的生命周期

1 ;http://php.net/session.cookie-lifetime
2 session.cookie_lifetime = 0

结束会话,关闭浏览器就结束,设置以后单位为秒
传递session_id的cookie的有效路径.

; http://php.net/session.cookie-path
session.cookie_path = /

cookie与session的比较

 

转载于:https://www.cnblogs.com/zhony/p/10235529.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值