0

0

php会话控制session、cookie介绍

小云云

小云云

发布时间:2018-03-02 09:47:03

|

1915人浏览过

|

来源于php中文网

原创

一、cookie

1>cookie介绍

Cookie是存储在客户端浏览器中的数据,可以通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTPheaders从服务端返回到客户端。多数web程序都支持对Cookie的操作,因为Cookie是存在于HTTP的标头之中。  在PHP通过setcookie函数对Cookie进行设置,任何从浏览器发回的Cookie,PHP都会自动的将他存储在_COOKIE[‘key’]的形式来读取某个Cookie值。  使用会话Session时通常使用Cookie来存储会话id来识别用户,Cookie具备有效期,当有效期结束之后,Cookie会自动的从客户端删除。

2>设置cookie
setcookie()
 意义:用于设置cookie,在setcookie()函数中一个有7个参数(常用的参数只有5个)。
 语法:setcookie(name,value,expire,path,domain,secure,httponly)
 返回值:如果在调用此函数之前存在输出,则 setcookie()将失败并返回FALSE。如果 setcookie()成功运行,它将返回TRUE。这并不表示用户是否接受了Cookie。

参数:
 name:
  Cookie的名称,通过$_COOKIE[‘name’]访问。
 value:
  Cookie的值
 expire:
  Cookie到期的时间。这是一个Unix时间戳,单位是秒。你可以用time()函数加上你希望它过期之前的秒数来设置它。或者你可以使用mktime()。如果设置为0或省略,则cookie将在会话结束时过期(当浏览器关闭时),默认为0。
 path:
  (有效路径)如果路径设置为’/’,则整个网站都有效,如果设置为 ‘/ foo /’,则cookie将仅在/foo/目录和所有子目录(如/ foo / bar / of)中可用domain。
 domain:
  (cookie可用的域)默认整个域名都有效,要使cookie可用于整个域(包括它的所有子域),只需将该值设置为域名(本例中为’example.com’)即可。
 secure:
  表示该cookie只能通过客户端的安全HTTPS连接进行传输。设置TRUE时,只有存在安全连接时才会设置cookie。在服务器端,程序员只能在安全连接上发送这种cookie(eg:相对于

value, time()+3600, “path/”, “baidu.com”); //设置路径与域

3>Cookie的删除与过期时间
php中没有指定删除Cookie的函数,而是通过设置cookie的过期时间设置到当前时间之前,则该cookie会自动失效从而到达删除该cookie。

4>判断Cookie是否为空
isset()
 意义:判断某一cookie是否存在。
 语法:isset(对应的cookie属性);
 返回值:true/false

setcookie("name","SYN");if( isset( $_COOKIE["name"])){    echo  $_COOKIE["name"];
}else{    echo "不存在";
}

Session与cookie的异同

cookie:
 1、将数据存储在客户端,建立起用户与服务器之间的联系,通常可以解决很多问题,但是cookie仍然具有一些局限:
 2、cookie相对不是太安全,容易被盗用导致cookie欺骗
 3、单个cookie的值最大只能存储4k
 4、每次请求都要进行网络传输,占用带宽

session:
 1、将用户的会话数据存储在服务端,没有大小限制,
 2、通过一个session_id进行用户识别,PHP默认情况下session id是通过cookie来保存的

//开始使用sessionsession_start();//设置一个session$_SESSION['test'] = time();//显示当前的session_idecho "session_id:".session_id();echo "
";//读取session值echo $_SESSION['test'];//销毁一个sessionunset($_SESSION['test']);echo "
"; var_dump($_SESSION);

二、Session

1>session使用

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

先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题。
 session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。

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

2>删除和销毁session

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

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

session_destroy()
 session_destroy函数会删除所有数据,但是session_id仍然存在。

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

特别注意:
 session_destroy()并不会立即的销毁全局变量

_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset()。

3>使用session来存储用户的登陆信息

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

 1011,    'name' => 'spark',    'email' => '1637167XX@qq.com',    'sex'  => 'F');
header("content-type:text/html; charset=utf-8");/* 将用户信息保存到session中 */$_SESSION['uid'] = $userinfo['uid'];$_SESSION['name'] = $userinfo['name'];$_SESSION['userinfo'] = $userinfo;//* 将用户数据保存到cookie中的一个简单方法 */$str =serialize($userinfo); //将用户信息序列化setcookie('userinfo', $str);

了解更多关于序列化serialize;

相关推荐:

php用户登录代码session、cookie自动记忆功能

cookie 和session 的定义和区别

php session会话如何写入redis

相关文章

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

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

下载

相关标签:

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

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

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

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

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

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel 5.8 中文文档手册
Laravel 5.8 中文文档手册

共74课时 | 84.6万人学习

SESSION实现登录与验证
SESSION实现登录与验证

共10课时 | 9.6万人学习

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

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