xiaoyi's blog
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub

xuexuguang

后端新秀
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub
  • 学习

  • GitHub技巧

  • 面试

    • 面试问题集锦
    • PHP基础
      • 为什么要使用php会话技术
      • cookie如何操作?
      • cookie优点和缺点
      • session
      • session的优缺点
      • 传递SessionID的问题
    • 正则表达式
    • PHP文件操作
    • PHP会话控制
    • 自定义函数及内置函数
    • MVC对比
    • linux
    • MySQL数据库基础
    • MySQL创建高性能的索引
    • MySQL的SQL优化
    • MySQL的高可扩展和高可用
    • MySQL安全
    • 常见算法
    • 常见数据结构
    • 高并发解决方案
    • 流量优化
    • 浏览器缓存和数据压缩
    • 图片优化
    • 静态化处理
    • 动态语言并发处理
    • 数据库缓存优化
    • 负载均衡
  • 博客搭建

  • 心情杂货

  • 技术文档

  • 实用技巧

  • 友情链接
  • 更多
  • 面试
xuexuguang
2020-12-31

PHP基础

# 为什么要使用php会话技术

http协议本身是无状态的,用户在两个不同的页面发起请求,对于服务端而言是无法坚定请求是否是来源于同一个用户。会话控制就是为了解决这种问题,用于识别用户请求。

# cookie如何操作?

// 设置cookie
setcookie($name,$value,$expire,$path,$domain,$secure);
// 读取cookie 
$_COOKIE
// 删除cookie
setcookie($name, '', time() - 1000)
1
2
3
4
5
6

# cookie优点和缺点

  • cookie将信息存储在客户端,不会占用服务器资源。
  • Cookie`数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。在当今新的浏览器和客户端设备版本中,支持 8192 字节的 Cookie 大小已愈发常见。
  • 由于在HTTP请求中的cookie是明文传递的,潜在的安全风险,Cookie 可能会被篡改

# session

Session基于cookie的,存储在服务器端,用户每次请求浏览器的时候会携带sessionID,服务端根据sessionID来读取会话。

session如何操作?

// 开启session 
session_start();
// 读取session 
$_SESSION
// 清空session
$_SESSION = [];
// 删除session文件
session_destroy();
1
2
3
4
5
6
7
8

php.ini中session如何配置?

// 是否自动开启session_start
session.autostart
// 存储session的cookie的有效域名是什么
session.cookie_domain
// 存储session的cookie路径
session.cookie_path
// 存储的sessionid的名称
session.name
// 存储的session的路径
session.save_path

// session的垃圾回收 
// 每100次调用session_start会有一次去清文件,清空当前时间-文件最后修改时间大于gc_maxlifetime的文件
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440

// session存储的句柄 
session.save_handler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# session的优缺点

由于存储在服务器端所以比较安全,但是由于存储在服务器端会存在服务器资源占用问题

# 传递SessionID的问题

1、session是基于cookie的,但是如果我们禁用掉cookie的话,该怎么办呢?

可以使用session_name()和session_id()来传递或者SID

// 可以使用session_name()和session_id()
<a href="demo.php?SESSIONID=<?php echo session_name()."=".session_id()?>">下个页面</a>

// 使用SID,如果开启cookie的话,SID是空,否则就是session_name()和session_id()的拼接 
<a href="demo.php?SESSIONID=<?php echo SID?>">下个页面</a>
1
2
3
4
5
编辑
#php面试题
上次更新: 2020/12/31, 06:55:18
面试问题集锦
正则表达式

← 面试问题集锦 正则表达式→

最近更新
01
MVC对比
12-31
02
负载均衡
12-31
03
数据库缓存优化
12-31
更多文章>
Theme by Vdoing | Copyright © 2020-2020 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式