浅谈COOKIE和SESSION区别


Posted in PHP onJuly 19, 2015

一、cookie介绍

cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

1、设置Cookie

PHP用SetCookie函数来设置Cookie。

SetCookie函数定义了一个Cookie,并且把它附加在HTTP头的后面,SetCookie函数的原型如下:
int SetCookie(string name, string value, int expire, string path, string domain, int secure);

参数说明:cookie名称,cookie值,过期时间(int),有效路径,有限域名,https传递才有效

注意:当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到.这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器的原因。

使用例子:

普通使用:

setcookie('name','PHP淮北');

带失效时间的:
setcookie('name','PHP淮北',time()+24*60*60);//1day

Cookie是面向路径的 ,默认存储在当前文件下,如果没有设置路径,不同文件下的cookie默认保存在不同文件夹下,如图:默认保存在mytest文件夹下

2、接收和处理Cookie

用户端与服务端的web通信协议是http。而PHP通过http取得用户数据惯用的三种方法分别是:POST方法、GET方法还有Cookie。而PHP默认传递方法正是Cookie,也是最佳方法。

比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值

3,删除Cookie

要删除一个已经存在的Cookie,有两个办法:

一是调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;例如:setcookie('name','');
另一个办法是设置Cookie的失效时间为time()或time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。 例如:setcookie('name','PHP淮北',time()-24*60*60);
要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。
使用Cookie的注意事项:

首先是必须在HTML文件的内容输出之前设置(Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容输出之前调用Cookie函数。
在PHP页面可以先使用

ob_start();//开启

code…..

ob_end_flush(); //刷新缓存

可以防止header提示错误);

不同的浏览器对Cookie的处理机制不一样
cookie限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。
当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到

二、session介绍

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息,每一个网站访客都会被分配给一个唯一的标志符,即会话ID,它的存放形式无非两种:要么经过url传递,要么保存在客户端的Cookies里.当然,你也可以将Session保存到数据库里,这样会更安全,但效率方面会有所下降.url方式传递安全性肯定太差,PHP的会话机制是通过设置Cookie,在Cookie中保存会话id(Session ID),在服务器端会生成session文件,与用户进行关联,Web应用程序存储与这些Session相关的数据,并在各页面间进行传递.

PHP相关函数

在PHP中有关Session的函数比较多,不过我们最常用到的也就这么几个函数:

session_start():启用session机制,在需要用到session的程序文件的最开始调用它.

session_register():注册session变量

session_unregister(): 删除session变量(一个一个删除)

session_is_registered(): 判断session变量是否注册

session_distroy(): 销毁所有session变量(所有session变量销毁,包括文件)

需要注意下面几个方面:

1.函数session_start()必须在程序最开始执行,在其前面不能有任何输出内容,否则

就会出现“Warning:Cannot send session cookie - headers already

sent"类似这样的警告信息.

2.函数session_register()用于注册要保存在session中的相关变量,其用法如下:

<?php
 
$val = "session value";
 
session_register("val");
 
?>

val即为要注册的session变量名,在注册时一定不要加上"$"符号,只写其变量名称即可.

3.函数session_unregister()与上面函数用法完全相同,但功能相反,上面函数是注册

session变量,而其则是删除指定的session变量.

4.函数session_is_registered()用于判断session变量是否注册.

5.函数session_destroy()主要用于在系统注销和退出时,销毁所有的session变量,它没有参数,直接调用即可。

Session与PHP.ini的关系配置

1,session.save_handler = file

用于读取/回写session数据的方式,默认是files。它会让PHP的session管理函数使用指定的文本文件存储session数据

2,session.save_path = “/xammp/temp/”

指定保存session文件的目录,可以指定到别的目录,但是指定目录必须要有httpd守护进程属主(比如apache或www等)写权限,否则无法回存session数据。它还可以写成这样session.save_path = “N;/path” 其中N是整数。这样使得不是所有的session文件都保存在同一个目录中,而是分散在不同目录。这对于服务器处理大量session文件是很有帮助的。(注:目录需要自己手工创建)

3,session.auto_start = 0

如果启用该选项,用户的每次请求都会初始化session。不推荐使用,最好通过session_start()显示地初始化session。

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
PHP安装攻略:常见问题解答(一)
Oct 09 PHP
php ajax 静态分页过程形式
Sep 02 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
浅析PHP Socket技术
Aug 02 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
6个超实用的PHP代码片段
Aug 10 PHP
最新版本PHP 7 vs HHVM 多角度比较
Feb 14 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 #PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 #PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 #PHP
PHP使用ODBC连接数据库的方法
Jul 18 #PHP
PHP封装的Twitter访问类实例
Jul 18 #PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 #PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 #PHP
You might like
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Python的动态重新封装的教程
2015/04/11 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
快速入手Python字符编码
2016/08/03 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
python怎么判断模块安装完成
2020/06/19 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
如何利用python进行时间序列分析
2020/08/04 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
社区工作者先进事迹
2014/01/18 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
感恩教育活动总结
2014/05/05 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
基于Python实现nc批量转tif格式
2022/08/14 Python