您的位置:首页 > 编程语言 > PHP开发

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
这个人写的挺好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: