美文网首页
php不同页面间共享数据 (cookie和session)

php不同页面间共享数据 (cookie和session)

作者: 阿昕_ | 来源:发表于2018-02-20 00:04 被阅读74次

如何在不同的页面间共享数据呢?

  • 数据库:慢,PHP连接Apache,Apache连接数据库服务器
  • 包含文件:较慢,PHP连接Apache,不用二次通讯,在本服务器上读取对应的文件即可,受约于硬盘的转速
  • cookie:利用的也是文件,存的时候是数组的形式,拿出来也是可以直接使用的数组
  • session:利用的也是文件,存的时候是数组的形式,拿出来也是可以直接使用的数组
  • 内存:最快,关机消失,可以从数据库取出常用数据至内存,缓存技术的一种

cookie与session是相互补充的,session运用了部分cookie技术

本文主要讲述cookie和session。先来两个故事~~~


有一天,A去沃尔玛(浏览器),前台美眉(服务器)说必须办会员卡才能购物。于是A提供了姓名、手机号、充值金额,美眉办理出了A三张卡,把信息(cookie数据)录入到卡里,并把卡快递到了A的家里(客户端),并告诉他必须回家带着卡里的信息,下次才能来购物,本次不能消费,而且三张卡的有效期都是一周(cookie的有效期),三张卡互不影响,
于是A回家了。第二天携带着三张卡里的数据(cookie数据)又来了,美眉读取了A带来的数据($_COOKIE),把数据($_COOKIE)报给其他每个店铺,A就可以到每家店铺消费。
一周后,家里的卡(客户端数据)失效了,A无法读出卡里的数据,无奈又去万达重新办了卡(重新设置cookie)。
新卡办完第二天,A的三张卡丢了,赶紧去万达挂失,美眉立即帮A把三张卡挂失了(设置cookie过期时间),并重新给A办理了三张临时卡(重新设置cookie,过期时间设置为0,会话后过期),下次来使用的时候一旦出了万达大门(关闭浏览器)就失效了。


B去了万达广场(浏览器),也是必须办会员卡才能购物,同样提供了姓名、手机号、充值金额,
前台美眉(服务器)留下了卡(session文件),只给了B一个卡号(PHPSESSID),
而且告诉B现在就可以购物,去店铺报上卡号(PHPSESSID)就OK了。
于是B兴冲冲的去了屈臣氏,报上了卡号(PHPSESSID),屈臣氏的工作人员检查了卡有没有过期(开启session,过期或不存在就重新办理),然后向前台美眉(服务器)发送了卡号(PHPSESSID),换来了B的信息($_SESSION)。
第二天,B又来了,说了卡号,但是前台美眉让他重新办卡,说是默认规定每次来购物都要重新办卡,也可以自己设置多久办一次卡(需设置php.ini里的session.cookie_lifetime
和session.gc_maxlifetime),于是B又办了一张卡,但是刚办完,B又不想要这张卡了,去找美眉注销,于是美眉就一通操作(

  • 清空内存里的session数组
  • 删除客户端的cookie文件
  • 删除服务器上的session文件
    )

两个故事最大的区别在于:

  • 1.卡在不在自己手里(数据是在客户端还是在服务器)
  • 2.能不能当场消费(第一次刷新页面能不能获取到数据)
  • 3.安全性(对泄露而言 数据在服务器比在客户端要安全一点点)

代码如下:

<?php 
// 首次刷新 cookie 本次设置不会生效
// cookie是在header头里传递的,header头必须在正文输出之前发送,所以不允许在cookie前有输出
setcookie('name','user1',time()+3,'/'); #3s后过期
setcookie('age','20',time()+36000,'/');
setcookie('sex','man',time()+36000,'/');

echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
 ?>
 <?php 
setcookie('name','user1',time()-1,'/'); #设置立即过期
setcookie('age','20',0,'/');    #会话结束后(关闭浏览器)过期
setcookie('sex','man',0,'/');

echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
 ?>
 <?php 
session_start();

$_SESSION['username'] = 'user11';
$_SESSION['userid'] = '1';

echo "<pre>";
print_r($_SESSION);
echo "</pre>";
 ?>
 <?php 
session_start();

// 清空内存里的 session数组
$_SESSION=array();

// 清除客户端
setcookie('PHPSESSID','',time()-1,'/');

// 清除服务器
session_destroy();

 ?>

相关文章

  • php不同页面间共享数据 (cookie和session)

    如何在不同的页面间共享数据呢? 数据库:慢,PHP连接Apache,Apache连接数据库服务器 包含文件:较慢,...

  • Cookie & Session

    阅读原文 cookie.php 为cookie示例session.php 为session示例demo验证cook...

  • session的原理与使用

    Session的声明与使用 Session的设置不同于Cookie,必须先启动,在PHP中必须调用session_...

  • 2020春招PHP面试题(附答案)

    PHP 一. 基础 1, session和cookie的区别 Session是在服务端保存的一个数据结构,用来跟踪...

  • 前端面试必考题

    1.cookie和session的区别: 共同点:都是用来存储数据的;不同点:cookie:1.>cookie存在...

  • session和cookie的区别

    #### Cookie和Session的区别 1、cookie数据存放在客户的浏览器上,session数据放在服务...

  • php单点登录

    PHP不同域名cookie共享(单点登录实现原理) PHP使用P3P完成COOKIE跨域操作 实际实用中,类似的需...

  • 第四次课

    老师讲课内容 在同一用户的不同页面之间如何共享数据 Cookie技术(小甜饼) Sendredirect()转向(...

  • 遇到的面试题

    1.session和cookie的区别答:(一)、cookie数据存放在客户的浏览器上,session数据放在服务...

  • JMeter处理Cookie与Session

    cookie 和session 的区别: 1、cookie数据存放在客户的浏览器上,session数据放在服务器上...

网友评论

      本文标题:php不同页面间共享数据 (cookie和session)

      本文链接:https://www.haomeiwen.com/subject/gavwtftx.html