0

0

PHP中的cookie和session

怪我咯

怪我咯

发布时间:2017-01-16 11:01:56

|

2192人浏览过

|

来源于php中文网

原创

php中,有两个很重要的函数,就是我们的cookiesession,那么它们是怎么使用,又有什么区别呢?

本篇文章就带你了解一下cookie和session

cookie简介

Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端。多数web程序都支持Cookie的操作,

因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。

设置cookie方法

setcookie("name",'zhangsan');

立即学习PHP免费学习笔记(深入)”;

setcookie("name",'zhangsan',time()+60);//设置cookie有效时间为60秒

//setcookie("visittime",date("y-m-d H:i:s"),time()+60);//设置保存cookie失效时间的变量

读取cokie方法

$name=$_COOKIE["name"};

删除cookie方法

setcookie("name","",time()-1);//将cookie()的时间设置为当前时间减1,time()函数返回以秒表示的当前时间戳,把过期时间减1秒就会得到过去的时间,从而删除cookie

删除cookiez只是需要将setcookie()函数中的第二个参数设置为空值,将第三个参数cookie的过期时间设置为小于系统的当前时间即可

0.gif

了解过cookie之后我们再看一下session

session是将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别,PHP默认情况下session id是通过cookie来保存的,因此从某种程度上来说,seesion依赖于cookie。但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session。

使用session

在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。

session_start();$_SESSION['test'] = time();var_dump($_SESSION);

session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。

session_start();$_SESSION['ary'] = array('name' => 'jobs');$_SESSION['obj'] = new stdClass();var_dump($_SESSION);

默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题,这个我们会在一些高级的课程中讲到。

删除与销毁session

删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。

session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name']; //提示name不存在

如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在。

session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();session_destroy();

值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。

session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();unset($_SESSION);session_destroy(); var_dump($_SESSION); //此时已为空

如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。

使用session来存储用户的登录信息

session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。

用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储。

2019最新3屏支持电脑和手机端的幻灯片轮播代码
2019最新3屏支持电脑和手机端的幻灯片轮播代码

3屏支持电脑和手机端的幻灯片轮播代码,兼容主流浏览器,php中文网推荐下载!

下载

$_SESSION['uid'] = $userinfo['uid'];$_SESSION['userinfo'] = $userinfo;

一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。

header("content-type:text/html; charset=utf-8");

session_start();//假设用户登录成功获得了以下用户数据$userinfo = array(

'uid' => 100,

'name' => 'liu',

'email' => '123456789@qq.com',

'sex' => 'man',

'age' => '23');

/* 将用户信息保存到session中 */

$_SESSION['uid'] = $userinfo['uid'];

$_SESSION['name'] = $userinfo['name'];

$_SESSION['userinfo'] = $userinfo;

//* 将用户数据保存到cookie中的一个简单方法 */

$secureKey = 'php';

//加密密钥$str = serialize($userinfo);

//将用户信息序列化//用户信息加密前

$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));

//用户信息加密后//将加密后的用户数据存储到cookie中

setcookie('userinfo', $str);

?>

c9.png

最后我们再看一下session与cookie最大的区别是:

一,session是将session信息保存在服务器上,并通过一个session ID来传递客户端的信息,同时服务器接收到session ID 后,根据这个ID来提供相关的sesion信息资源

二,cookie是将所有的信息以文本的形式保存在客户端,并由浏览器进行管理和维护

三,由于session为服务器存储,所有远程用户无法修改session文件的内容,而cookie

为客户端存储,所有session要比cookie安全的多,当然还有很多优点,如控制容易,可以按照客户自定义存储等(存储于数据库)...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

11

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

4

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.21

windows激活码分享 windows一键激活教程指南
windows激活码分享 windows一键激活教程指南

Windows 10/11一键激活可以通过PowerShell脚本或KMS工具实现永久或长期激活。最推荐的简便方法是打开PowerShell(管理员),运行 irm https://get.activated.win | iex 脚本,按提示选择数字激活(选项1)。其他方法包括使用HEU KMS Activator工具进行智能激活。

2

2026.01.21

excel表格操作技巧大全 表格制作excel教程
excel表格操作技巧大全 表格制作excel教程

Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

6

2026.01.21

毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm
毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm

毒蘑菇VOLUMESHADER_BM测试网站网址为https://toolwa.com/vsbm/,该平台基于WebGL技术通过渲染高复杂度三维分形图形评估设备图形处理能力,用户可通过拖动彩色物体观察画面流畅度判断GPU与CPU协同性能;测试兼容多种设备,但中低端手机易卡顿或崩溃,高端机型可能因发热降频影响表现,桌面端需启用独立显卡并使用支持WebGL的主流浏览器以确保准确结果

25

2026.01.21

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php注册登录系统开发实战
php注册登录系统开发实战

共10课时 | 13.5万人学习

PHP基于Cookie的购物车模块设计
PHP基于Cookie的购物车模块设计

共10课时 | 10.7万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 26.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号