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

本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,若有侵权请联系我进行删除,email:guoyugygy@163.com

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

回顾真题

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

答案:web

COOKIE:面试

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

SESSION:数组

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

cookie和session结合使用:安全

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

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

二、将session数据加密,而后存储在cookie中。这种专业术语叫作client side session。flask采用的就是这种方式,可是也能够替换成其余形式。session

考点分析

PHP的会话控制技术

COOKIE:

cookie 经常使用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机经过浏览器请求页面时,这台计算机将会发送 cookie。经过 PHP,您可以建立并取回 cookie 的值。

操做

建立cookie

setcookie(name, value, expire, path, domain);

<?php
setcookie("user", "runoob", time()+3600);
?>

读取cookie

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

<?php
// 输出 cookie 值
echo $_COOKIE["user"];

// 查看全部 cookie
print_r($_COOKIE);
?>

删除cookie

当删除 cookie 时,您应当使过时日期变动为过去的时间点。

<?php
// 设置 cookie 过时时间为过去 1 小时
setcookie("user", "", time()-3600);
?>

Session:
PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,而且对于应用程序中的全部页面都是可用的。

操做
在您把用户信息存储到 PHP session 中以前,首先必须启动会话。

session_start() 函数

<?php session_start(); ?>

存储 Session 变量

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:

<?php
session_start();
// 存储 session 数据
$_SESSION['views']=1;
?>

销毁 Session

若是您但愿删除某些 session 数据,可使用 unset() 或 session_destroy() 函数。unset() 函数用于释放指定的 session 变量:

<?php
session_start();
if(isset($_SESSION['views']))
{
    unset($_SESSION['views']);
}
?>

配置Session

session.auto_start

php.ini配置session.auto_start=0默认关闭,session.auto_start 开启就自动完成了session_start()。

session.cookie.lifetime

session.cookie.lifetime 默认是0,即浏览器关闭,session失效;修改这个值的做用是修改sessionid以cookie的形式保留在浏览器的时间长度,也就是说这个值设置一个小时,名为sessionid的cookie就保留在浏览器一个小时,session一个小时后才过时;

垃圾回收

session.gc_maxlifetime; 设置过时session时间,默认1440秒(24分钟)

session.gc_probability/session.gc_divisor; 启动垃圾回收机制的几率(建议值为1/1000——5000)

session_id()

session_id — 获取/设置当前会话 ID

session_name()

session_name — 读取/设置会话名称

一网打尽

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

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

若是这篇博文有帮助到您,能够帮冷月点一个赞或者加一个关注哦!

欢迎关注个人公众号:学长冷月,得到独家整理的学习资源和平常干货推送。
若是您对个人专题内容感兴趣,也能够关注个人博客: guoyu7.com
相关文章
相关标签/搜索