前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php面试笔记(8)-php基础知识-会话控制考点

php面试笔记(8)-php基础知识-会话控制考点

作者头像
学长冷月
发布2020-08-02 22:17:55
5460
发布2020-08-02 22:17:55
举报

收获知识仅需5min~

php基础知识-会话控制

在上一篇中,冷月为大家分享了文件及目录处理考点,大家一定要根据自己的薄弱点进行查漏补缺,尝试着练习目录的复制和删除函数的编写。今天,冷月为大家分享会话控制考点。

01

回顾真题

简述cookie和session的区别及各自的工作机制,存储位置等。简述cookie的优缺点。

滑动阅览

答案:

COOKIE:

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

SESSION:

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

cookie和session结合使用:

web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:

1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。

02

考点分析

PHP的会话控制技术

02-1

COOKIE:

cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。操作如下:

1

创建cookie:setcookie(name, value, expire, path, domain);<?phpsetcookie("user", "runoob", time()+3600);?>

2

读取cookiePHP 的 $_COOKIE 变量用于取回 cookie 的值。<?php// 输出 cookie 值echo $_COOKIE["user"];// 查看所有 cookieprint_r($_COOKIE);?>

3

删除cookie当删除 cookie 时,您应当使过期日期变更为过去的时间点。<?php// 设置 cookie 过期时间为过去 1 小时setcookie("user", "", time()-3600);?>

02-2

Session:

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。操作: (在您把用户信息存储到 PHP session 中之前,首先必须启动会话!)

1

session_start() 函数<?php session_start(); ?>

2

存储 Session 变量存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:<?phpsession_start();// 存储 session 数据$_SESSION['views']=1;?>

3

销毁 Session如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。unset() 函数用于释放指定的 session 变量:<?phpsession_start();if(isset($_SESSION['views'])){ unset($_SESSION['views']);}?>

4

配置Session 1.session.auto_startphp.ini配置session.auto_start=0默认关闭,session.auto_start 开启就自动完成了session_start()。 2.session.cookie.lifetimesession.cookie.lifetime 默认是0,即浏览器关闭,session失效;修改这个值的作用是修改sessionid以cookie的形式保留在浏览器的时间长度,也就是说这个值设置一个小时,名为sessionid的cookie就保留在浏览器一个小时,session一个小时后才过期;

5

垃圾回收session.gc_maxlifetime; 设置过期session时间,默认1440秒(24分钟)session.gc_probability/session.gc_divisor; 启动垃圾回收机制的概率(建议值为1/1000——5000) 1.session_id()session_id — 获取/设置当前会话 ID 2.session_name()session_name — 读取/设置会话名称

03

一网打尽

在学习了本博文之后,冷月来测试一下大家对于知识的掌握程度。请看下面这道题:

session信息的存储方式、如何遍历session

答案:session是一种服务端机制,服务器使用一种类似于散列表的结构来保存信息,在PHP中直接用$_SESSION数组来遍历即可

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 学长冷月 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档