php中cookie与session关系
2016-03-13 20:30
447 查看
我们大家学习网页之类的东西,最重要的就是学好其基础,而基础不是你写多少代码,而是你能明白其工作原理。
当我们上网时,我们打开浏览器,点击“百度”标签(www.baidu.com的映射),此时浏览器向百度服务器发送请求,然后服务器收到浏览器发送的请求后,返给浏览器“百度”页面的文件,让后我们才可以看到“百度”页面。(即此时,百度页面已经下载到本机,不过为临时存储)。同理,其他机制也是如此。
cookie和session是用来使无状态的服务器和浏览器变得有状态,像一个桥,搭建在浏览器和服务器,使之联系。
当我们浏览网页时,服务器端为我们浏览的状态创建一个session变量,用来储存我们现在浏览网页的状态,session返回到浏览器一个id(session_id),这个id用浏览器端的cookie储存,这样,我们就可以通过cookie记录浏览状态。当我们再次打开浏览器时,就可以回到之前浏览状态。
不过,cookie默认存在时间(生命周期)为打开浏览器创建,关闭浏览器销毁。可以用下面的方法设置cookie存储时间
setCookie('cookie名字','cookie值','保存时间');
如果想要修改cookie的值,任然使用setCookie(),会覆盖相同名称的cookie值
setCookie('cookie名字','cookie值','保存时间');
服务器端记录我们浏览状态的session一般为保存30分钟,如果不设置session的存储时间,即使设置cookie永不过期也不能找到自己浏览状态了。
session周期设置
函数 session_set_cookie_params();
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
?>
php中还有一个ini_set可以设置session.gc_maxlifetime来设定Session的生存周期。例如:
<?php
ini_set('session.gc_maxlifetime', 3600); //设置时间
ini_get('session.gc_maxlifetime');//得到ini中设定值
?>
在此我不做详细介绍了。
session可以储存到数据库中,只要数据库在,就永远不丢失。不过这种方法是不可以大范围使用的,因为将session存在数据库中,随着时间的增加,数据库中的数据会越来越多,最后会将数据库撑爆。
那么怎么可以使我们浏览的信息永不过期呢,哈哈,是不是很想知道,我当时就对此很疑惑。
将自己的浏览信息永不过期是不可能的,但是我们可以通过一种方法产生浏览信息永不过期的效果。在cookie中我们不仅存储session_id,还存储了一段加密代码,我们想回到之前的浏览状态时,cookie通过这个代码重新执行我们的操作,实现“记住我们浏览状态”。
可以参考: http://www.cnblogs.com/aspnet_csharp/archive/2012/10/18/2729609.html
这个人写的挺好
当我们上网时,我们打开浏览器,点击“百度”标签(www.baidu.com的映射),此时浏览器向百度服务器发送请求,然后服务器收到浏览器发送的请求后,返给浏览器“百度”页面的文件,让后我们才可以看到“百度”页面。(即此时,百度页面已经下载到本机,不过为临时存储)。同理,其他机制也是如此。
cookie和session是用来使无状态的服务器和浏览器变得有状态,像一个桥,搭建在浏览器和服务器,使之联系。
当我们浏览网页时,服务器端为我们浏览的状态创建一个session变量,用来储存我们现在浏览网页的状态,session返回到浏览器一个id(session_id),这个id用浏览器端的cookie储存,这样,我们就可以通过cookie记录浏览状态。当我们再次打开浏览器时,就可以回到之前浏览状态。
不过,cookie默认存在时间(生命周期)为打开浏览器创建,关闭浏览器销毁。可以用下面的方法设置cookie存储时间
setCookie('cookie名字','cookie值','保存时间');
如果想要修改cookie的值,任然使用setCookie(),会覆盖相同名称的cookie值
setCookie('cookie名字','cookie值','保存时间');
服务器端记录我们浏览状态的session一般为保存30分钟,如果不设置session的存储时间,即使设置cookie永不过期也不能找到自己浏览状态了。
session周期设置
函数 session_set_cookie_params();
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
?>
php中还有一个ini_set可以设置session.gc_maxlifetime来设定Session的生存周期。例如:
<?php
ini_set('session.gc_maxlifetime', 3600); //设置时间
ini_get('session.gc_maxlifetime');//得到ini中设定值
?>
在此我不做详细介绍了。
session可以储存到数据库中,只要数据库在,就永远不丢失。不过这种方法是不可以大范围使用的,因为将session存在数据库中,随着时间的增加,数据库中的数据会越来越多,最后会将数据库撑爆。
那么怎么可以使我们浏览的信息永不过期呢,哈哈,是不是很想知道,我当时就对此很疑惑。
将自己的浏览信息永不过期是不可能的,但是我们可以通过一种方法产生浏览信息永不过期的效果。在cookie中我们不仅存储session_id,还存储了一段加密代码,我们想回到之前的浏览状态时,cookie通过这个代码重新执行我们的操作,实现“记住我们浏览状态”。
可以参考: http://www.cnblogs.com/aspnet_csharp/archive/2012/10/18/2729609.html
这个人写的挺好
相关文章推荐
- weiphp使用心得
- 使用thinkphp时因为一个’/‘造成页面一直跳转
- 服务器上装filezilla server后,本地的ftp客户端连接不上去
- PHP Undefined index报错的修复方法
- PHP类中的__get()和__set函数到底有什么用?
- MAMP环境下安装php扩展
- editplus 下载
- php基础速记
- [PHP]常用正则验证专题,以后会不断添加,主要是搜集引用,感谢各路大神!
- 命令上执上执行Yaf
- 网页 PHP 动态师范
- windows server 2008/2012安装php+iis7+mysql环境搭建
- php如何实现验证码
- PHP SQL Server 数据库操作类
- PHP创建与调用MySQL存储过程实例
- PHP 图片处理类(水印、透明度、缩放、相框、锐化、旋转、翻转、剪切、反色)
- Laravel Middleware 中间件笔记
- vim php语法检查
- ftp配置
- [PHP]Smarty模板造成的自动加载函数__autoload失灵问题