PHP session and cookie

来源:互联网 发布:全站仪编程 编辑:程序博客网 时间:2024/06/08 11:40

cookie 和 session 主要不同的是存储机制。cookie 是一个web页面到下一个页面的数据传输方法,存储在客户端;session 是让数据在页面中持续有效的方法,存储在服务器端

1.什么是cookie

Cookie 是在HTTP协议下,通过服务器或或脚本语言可以维护客户浏览器上信息的一种方式,存在与http请求头中。
cookie 简单的说,是web服务器暂时存储在用户硬盘上的一个文本文件。cookie文本文件命令格式:
用户名@网址[数字].txt

2.创建cookie

在PHP中通过 setcookie() 创建cookie。
cookie 是 HTTP 头标的组成部分,而投标必须在其他内容发送以前发送,因此在 setcookie() 之前不能有任何内容的输出。

cookie 语法格式如下:bool cookie( name [,value [,expire [,path [,domain [,secure]]]]]) expire  : 有效时间path : cookie 在服务器端的有效路径domain : cookie 有效域名secure : cookie 是否仅通过安全的https,1,只在https上有效, 0,默认值都有效

3.读取Cookie

$_COOKIE[] 超全局数组读取浏览器端的Cookie值

4.删除Cookie

setcookie( "name","",time()-1 ); //值为空,有效期小于当前时间

5.cookie 生命周期

如果不设置失效时间,为会话Cookie,保存在内存中,关闭浏览器,Cookie失效。
设置了失效时间,保存在硬盘中,关闭浏览器依然有效,知道有效期超时。
浏览器最多允许存储300个Cookie文件,每个文件最大容量为4KB ,每个域名最多支持20个Cookie,达到限制,浏览器自动随机删除Cookie文件

SESSION

1.什么是SESSION

在计算机术语中,session 是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间。因此。Session实际上是一个特定的时间概念。
Session 工作原理: 启动一个session会话时,会生成一个随机而且唯一的session_id ,也就是session 的文件名,session_id 存储在服务器的内存中。关闭页面时 id 自动注销。

2.创建会话

2.1启动会话

  1. session_start() 函数
bool session_start(void); // 使用函数之前浏览器不能有任何内容的输出
  1. session_register()函数
    session_register() , 函数需要 php.ini 中将 register_golbals 设置为on ; 使用session_register() 时不需要调用session_start(),PHP在创建了变量后隐含的调用了session_start()。

2.2 注册会话

session_start();$_SESSION['name'] = 'yuzhangsir';

2.3 使用会话

if(!empty($_SESSION['name'])){    $name = $_SESSION['name'];}

2.4 删除会话

unset( $_SESSION['name'] ) ; //删除单个会话,必须加元素,否则一次注销整个$_SESSION 会禁止整个会话功能,没有办法恢复,用户也没有办法再注册$_SESSION = array(); // 删除所有的会话变量session_destroy() ; // 结束当前会话

3.SESSION 设置时间

3.1客户端没有禁用Cookie

session_start();$time = 36800 ;setcookie( session_name(), session_id(), time()+$time , '/');$_SESSION['name'] = 'yuzhangsir';

3.2 客户端禁用了Cookie

1.提醒用户必须打开Cookie ;
2. php.ini 中,session.use_trans_sid = 1 , 或者编译时打开 -enable-trans-sid 选项;
3. 文件或者数据中存储 session_id

4.Session 临时文件

在服务器中,如果将所有用户的Session 都保存在临时目录中,会降低服务器的安全性和效率,session_save_path() ,可以设置存储路径、

$path = './tmp/';session_save_path($path);session_start();