manual-php
Version:
3,545 lines • 125 kB
HTML
<!DOCTYPE HTML>
<html lang="zh-hans" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>会话管理基础 · PHP</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content="Kuriv Vesti">
<link rel="stylesheet" href="../../gitbook/style.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-back-to-top-button/plugin.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-lightbox/css/lightbox.min.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-prism/prism-okaidia.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-search-pro/search.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="和会话安全相关的配置项.html" />
<link rel="prev" href="../会话和安全.html" />
<link rel="shortcut icon" href='../../favicon.ico' type="image/x-icon">
<link rel="bookmark" href='../../favicon.ico' type="image/x-icon">
<link rel="apple-touch-icon" href='../../favicon.png'>
<link rel="apple-touch-icon" sizes="120x120" href="../../favicon-120x120.png">
<link rel="apple-touch-icon" sizes="180x180" href="../../favicon-180x180.png">
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="输入并搜索" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="../../">
<a href="../../">
PHP
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1" data-path="../语言参考.html">
<a href="../语言参考.html">
语言参考
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.1" data-path="../语言参考/基本语法.html">
<a href="../语言参考/基本语法.html">
基本语法
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.1.1" data-path="../语言参考/基本语法/PHP 标记.html">
<a href="../语言参考/基本语法/PHP 标记.html">
PHP 标记
</a>
</li>
<li class="chapter " data-level="1.1.1.1.2" data-path="../语言参考/基本语法/从 HTML 中分离.html">
<a href="../语言参考/基本语法/从 HTML 中分离.html">
从 HTML 中分离
</a>
</li>
<li class="chapter " data-level="1.1.1.1.3" data-path="../语言参考/基本语法/指令分隔符.html">
<a href="../语言参考/基本语法/指令分隔符.html">
指令分隔符
</a>
</li>
<li class="chapter " data-level="1.1.1.1.4" data-path="../语言参考/基本语法/注释.html">
<a href="../语言参考/基本语法/注释.html">
注释
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.2" data-path="../语言参考/类型.html">
<a href="../语言参考/类型.html">
类型
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.2.1" data-path="../语言参考/类型/Boolean 布尔类型.html">
<a href="../语言参考/类型/Boolean 布尔类型.html">
Boolean 布尔类型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.2" data-path="../语言参考/类型/Integer 整型.html">
<a href="../语言参考/类型/Integer 整型.html">
Integer 整型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.3" data-path="../语言参考/类型/Float 浮点型.html">
<a href="../语言参考/类型/Float 浮点型.html">
Float 浮点型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.4" data-path="../语言参考/类型/String 字符串.html">
<a href="../语言参考/类型/String 字符串.html">
String 字符串
</a>
</li>
<li class="chapter " data-level="1.1.1.2.5" data-path="../语言参考/类型/Array 数组.html">
<a href="../语言参考/类型/Array 数组.html">
Array 数组
</a>
</li>
<li class="chapter " data-level="1.1.1.2.6" data-path="../语言参考/类型/Object 对象.html">
<a href="../语言参考/类型/Object 对象.html">
Object 对象
</a>
</li>
<li class="chapter " data-level="1.1.1.2.7" data-path="../语言参考/类型/Resource 资源类型.html">
<a href="../语言参考/类型/Resource 资源类型.html">
Resource 资源类型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.8" data-path="../语言参考/类型/NULL.html">
<a href="../语言参考/类型/NULL.html">
NULL
</a>
</li>
<li class="chapter " data-level="1.1.1.2.9" data-path="../语言参考/类型/Callable 可调用类型.html">
<a href="../语言参考/类型/Callable 可调用类型.html">
Callable 可调用类型
</a>
</li>
<li class="chapter " data-level="1.1.1.2.10" data-path="../语言参考/类型/类型转换的判别.html">
<a href="../语言参考/类型/类型转换的判别.html">
类型转换的判别
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.3" data-path="../语言参考/变量.html">
<a href="../语言参考/变量.html">
变量
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.3.1" data-path="../语言参考/变量/基本语法.html">
<a href="../语言参考/变量/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.3.2" data-path="../语言参考/变量/变量范围.html">
<a href="../语言参考/变量/变量范围.html">
变量范围
</a>
</li>
<li class="chapter " data-level="1.1.1.3.3" data-path="../语言参考/变量/可变变量.html">
<a href="../语言参考/变量/可变变量.html">
可变变量
</a>
</li>
<li class="chapter " data-level="1.1.1.3.4" data-path="../语言参考/变量/来自 PHP 之外的变量.html">
<a href="../语言参考/变量/来自 PHP 之外的变量.html">
来自 PHP 之外的变量
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.4" data-path="../语言参考/常量.html">
<a href="../语言参考/常量.html">
常量
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.4.1" data-path="../语言参考/常量/基本语法.html">
<a href="../语言参考/常量/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.4.2" data-path="../语言参考/常量/魔术常量.html">
<a href="../语言参考/常量/魔术常量.html">
魔术常量
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.5" data-path="../语言参考/表达式.html">
<a href="../语言参考/表达式.html">
表达式
</a>
</li>
<li class="chapter " data-level="1.1.1.6" data-path="../语言参考/运算符.html">
<a href="../语言参考/运算符.html">
运算符
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.6.1" data-path="../语言参考/运算符/运算符优先级.html">
<a href="../语言参考/运算符/运算符优先级.html">
运算符优先级
</a>
</li>
<li class="chapter " data-level="1.1.1.6.2" data-path="../语言参考/运算符/算数运算符.html">
<a href="../语言参考/运算符/算数运算符.html">
算数运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.3" data-path="../语言参考/运算符/赋值运算符.html">
<a href="../语言参考/运算符/赋值运算符.html">
赋值运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.4" data-path="../语言参考/运算符/位运算符.html">
<a href="../语言参考/运算符/位运算符.html">
位运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.5" data-path="../语言参考/运算符/比较运算符.html">
<a href="../语言参考/运算符/比较运算符.html">
比较运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.6" data-path="../语言参考/运算符/错误控制运算符.html">
<a href="../语言参考/运算符/错误控制运算符.html">
错误控制运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.7" data-path="../语言参考/运算符/执行运算符.html">
<a href="../语言参考/运算符/执行运算符.html">
执行运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.8" data-path="../语言参考/运算符/递增递减运算符.html">
<a href="../语言参考/运算符/递增递减运算符.html">
递增递减运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.9" data-path="../语言参考/运算符/逻辑运算符.html">
<a href="../语言参考/运算符/逻辑运算符.html">
逻辑运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.10" data-path="../语言参考/运算符/字符串运算符.html">
<a href="../语言参考/运算符/字符串运算符.html">
字符串运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.11" data-path="../语言参考/运算符/数组运算符.html">
<a href="../语言参考/运算符/数组运算符.html">
数组运算符
</a>
</li>
<li class="chapter " data-level="1.1.1.6.12" data-path="../语言参考/运算符/类型运算符.html">
<a href="../语言参考/运算符/类型运算符.html">
类型运算符
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.7" data-path="../语言参考/流程控制.html">
<a href="../语言参考/流程控制.html">
流程控制
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.7.1" data-path="../语言参考/流程控制/if.html">
<a href="../语言参考/流程控制/if.html">
if
</a>
</li>
<li class="chapter " data-level="1.1.1.7.2" data-path="../语言参考/流程控制/else.html">
<a href="../语言参考/流程控制/else.html">
else
</a>
</li>
<li class="chapter " data-level="1.1.1.7.3" data-path="../语言参考/流程控制/elseif.html">
<a href="../语言参考/流程控制/elseif.html">
elseif
</a>
</li>
<li class="chapter " data-level="1.1.1.7.4" data-path="../语言参考/流程控制/while.html">
<a href="../语言参考/流程控制/while.html">
while
</a>
</li>
<li class="chapter " data-level="1.1.1.7.5" data-path="../语言参考/流程控制/do-while.html">
<a href="../语言参考/流程控制/do-while.html">
do-while
</a>
</li>
<li class="chapter " data-level="1.1.1.7.6" data-path="../语言参考/流程控制/for.html">
<a href="../语言参考/流程控制/for.html">
for
</a>
</li>
<li class="chapter " data-level="1.1.1.7.7" data-path="../语言参考/流程控制/foreach.html">
<a href="../语言参考/流程控制/foreach.html">
foreach
</a>
</li>
<li class="chapter " data-level="1.1.1.7.8" data-path="../语言参考/流程控制/switch.html">
<a href="../语言参考/流程控制/switch.html">
switch
</a>
</li>
<li class="chapter " data-level="1.1.1.7.9" data-path="../语言参考/流程控制/break.html">
<a href="../语言参考/流程控制/break.html">
break
</a>
</li>
<li class="chapter " data-level="1.1.1.7.10" data-path="../语言参考/流程控制/continue.html">
<a href="../语言参考/流程控制/continue.html">
continue
</a>
</li>
<li class="chapter " data-level="1.1.1.7.11" data-path="../语言参考/流程控制/流程控制的替代语法.html">
<a href="../语言参考/流程控制/流程控制的替代语法.html">
流程控制的替代语法
</a>
</li>
<li class="chapter " data-level="1.1.1.7.12" data-path="../语言参考/流程控制/declare.html">
<a href="../语言参考/流程控制/declare.html">
declare
</a>
</li>
<li class="chapter " data-level="1.1.1.7.13" data-path="../语言参考/流程控制/return.html">
<a href="../语言参考/流程控制/return.html">
return
</a>
</li>
<li class="chapter " data-level="1.1.1.7.14" data-path="../语言参考/流程控制/require.html">
<a href="../语言参考/流程控制/require.html">
require
</a>
</li>
<li class="chapter " data-level="1.1.1.7.15" data-path="../语言参考/流程控制/include.html">
<a href="../语言参考/流程控制/include.html">
include
</a>
</li>
<li class="chapter " data-level="1.1.1.7.16" data-path="../语言参考/流程控制/require_once.html">
<a href="../语言参考/流程控制/require_once.html">
require_once
</a>
</li>
<li class="chapter " data-level="1.1.1.7.17" data-path="../语言参考/流程控制/include_once.html">
<a href="../语言参考/流程控制/include_once.html">
include_once
</a>
</li>
<li class="chapter " data-level="1.1.1.7.18" data-path="../语言参考/流程控制/goto.html">
<a href="../语言参考/流程控制/goto.html">
goto
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.8" data-path="../语言参考/函数.html">
<a href="../语言参考/函数.html">
函数
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.8.1" data-path="../语言参考/函数/用户自定义函数.html">
<a href="../语言参考/函数/用户自定义函数.html">
用户自定义函数
</a>
</li>
<li class="chapter " data-level="1.1.1.8.2" data-path="../语言参考/函数/函数的参数.html">
<a href="../语言参考/函数/函数的参数.html">
函数的参数
</a>
</li>
<li class="chapter " data-level="1.1.1.8.3" data-path="../语言参考/函数/返回值.html">
<a href="../语言参考/函数/返回值.html">
返回值
</a>
</li>
<li class="chapter " data-level="1.1.1.8.4" data-path="../语言参考/函数/可变函数.html">
<a href="../语言参考/函数/可变函数.html">
可变函数
</a>
</li>
<li class="chapter " data-level="1.1.1.8.5" data-path="../语言参考/函数/匿名函数.html">
<a href="../语言参考/函数/匿名函数.html">
匿名函数
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.9" data-path="../语言参考/类与对象.html">
<a href="../语言参考/类与对象.html">
类与对象
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.9.1" data-path="../语言参考/类与对象/基本语法.html">
<a href="../语言参考/类与对象/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.9.2" data-path="../语言参考/类与对象/属性.html">
<a href="../语言参考/类与对象/属性.html">
属性
</a>
</li>
<li class="chapter " data-level="1.1.1.9.3" data-path="../语言参考/类与对象/类常量.html">
<a href="../语言参考/类与对象/类常量.html">
类常量
</a>
</li>
<li class="chapter " data-level="1.1.1.9.4" data-path="../语言参考/类与对象/类的自动加载.html">
<a href="../语言参考/类与对象/类的自动加载.html">
类的自动加载
</a>
</li>
<li class="chapter " data-level="1.1.1.9.5" data-path="../语言参考/类与对象/构造函数和析构函数.html">
<a href="../语言参考/类与对象/构造函数和析构函数.html">
构造函数和析构函数
</a>
</li>
<li class="chapter " data-level="1.1.1.9.6" data-path="../语言参考/类与对象/访问控制.html">
<a href="../语言参考/类与对象/访问控制.html">
访问控制
</a>
</li>
<li class="chapter " data-level="1.1.1.9.7" data-path="../语言参考/类与对象/对象继承.html">
<a href="../语言参考/类与对象/对象继承.html">
对象继承
</a>
</li>
<li class="chapter " data-level="1.1.1.9.8" data-path="../语言参考/类与对象/范围解析操作符.html">
<a href="../语言参考/类与对象/范围解析操作符.html">
范围解析操作符
</a>
</li>
<li class="chapter " data-level="1.1.1.9.9" data-path="../语言参考/类与对象/Static 关键字.html">
<a href="../语言参考/类与对象/Static 关键字.html">
Static 关键字
</a>
</li>
<li class="chapter " data-level="1.1.1.9.10" data-path="../语言参考/类与对象/抽象类.html">
<a href="../语言参考/类与对象/抽象类.html">
抽象类
</a>
</li>
<li class="chapter " data-level="1.1.1.9.11" data-path="../语言参考/类与对象/对象接口.html">
<a href="../语言参考/类与对象/对象接口.html">
对象接口
</a>
</li>
<li class="chapter " data-level="1.1.1.9.12" data-path="../语言参考/类与对象/Trait.html">
<a href="../语言参考/类与对象/Trait.html">
Trait
</a>
</li>
<li class="chapter " data-level="1.1.1.9.13" data-path="../语言参考/类与对象/匿名类.html">
<a href="../语言参考/类与对象/匿名类.html">
匿名类
</a>
</li>
<li class="chapter " data-level="1.1.1.9.14" data-path="../语言参考/类与对象/重载.html">
<a href="../语言参考/类与对象/重载.html">
重载
</a>
</li>
<li class="chapter " data-level="1.1.1.9.15" data-path="../语言参考/类与对象/遍历对象.html">
<a href="../语言参考/类与对象/遍历对象.html">
遍历对象
</a>
</li>
<li class="chapter " data-level="1.1.1.9.16" data-path="../语言参考/类与对象/魔术方法.html">
<a href="../语言参考/类与对象/魔术方法.html">
魔术方法
</a>
</li>
<li class="chapter " data-level="1.1.1.9.17" data-path="../语言参考/类与对象/Final 关键字.html">
<a href="../语言参考/类与对象/Final 关键字.html">
Final 关键字
</a>
</li>
<li class="chapter " data-level="1.1.1.9.18" data-path="../语言参考/类与对象/对象复制.html">
<a href="../语言参考/类与对象/对象复制.html">
对象复制
</a>
</li>
<li class="chapter " data-level="1.1.1.9.19" data-path="../语言参考/类与对象/对象比较.html">
<a href="../语言参考/类与对象/对象比较.html">
对象比较
</a>
</li>
<li class="chapter " data-level="1.1.1.9.20" data-path="../语言参考/类与对象/类型约束.html">
<a href="../语言参考/类与对象/类型约束.html">
类型约束
</a>
</li>
<li class="chapter " data-level="1.1.1.9.21" data-path="../语言参考/类与对象/后期静态绑定.html">
<a href="../语言参考/类与对象/后期静态绑定.html">
后期静态绑定
</a>
</li>
<li class="chapter " data-level="1.1.1.9.22" data-path="../语言参考/类与对象/对象和引用.html">
<a href="../语言参考/类与对象/对象和引用.html">
对象和引用
</a>
</li>
<li class="chapter " data-level="1.1.1.9.23" data-path="../语言参考/类与对象/对象序列化.html">
<a href="../语言参考/类与对象/对象序列化.html">
对象序列化
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.10" data-path="../语言参考/命名空间.html">
<a href="../语言参考/命名空间.html">
命名空间
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.10.1" data-path="../语言参考/命名空间/基本语法.html">
<a href="../语言参考/命名空间/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.10.2" data-path="../语言参考/命名空间/定义子命名空间.html">
<a href="../语言参考/命名空间/定义子命名空间.html">
定义子命名空间
</a>
</li>
<li class="chapter " data-level="1.1.1.10.3" data-path="../语言参考/命名空间/在同一个文件中定义多个命名空间.html">
<a href="../语言参考/命名空间/在同一个文件中定义多个命名空间.html">
在同一个文件中定义多个命名空间
</a>
</li>
<li class="chapter " data-level="1.1.1.10.4" data-path="../语言参考/命名空间/使用命名空间 - 基础.html">
<a href="../语言参考/命名空间/使用命名空间 - 基础.html">
使用命名空间 - 基础
</a>
</li>
<li class="chapter " data-level="1.1.1.10.5" data-path="../语言参考/命名空间/命名空间和动态语言特征.html">
<a href="../语言参考/命名空间/命名空间和动态语言特征.html">
命名空间和动态语言特征
</a>
</li>
<li class="chapter " data-level="1.1.1.10.6" data-path="../语言参考/命名空间/namespace 关键字和 __NAMESPACE__ 魔术常量.html">
<a href="../语言参考/命名空间/namespace 关键字和 __NAMESPACE__ 魔术常量.html">
namespace 关键字和 __NAMESPACE__ 魔术常量
</a>
</li>
<li class="chapter " data-level="1.1.1.10.7" data-path="../语言参考/命名空间/使用命名空间 - 别名和导入.html">
<a href="../语言参考/命名空间/使用命名空间 - 别名和导入.html">
使用命名空间 - 别名和导入
</a>
</li>
<li class="chapter " data-level="1.1.1.10.8" data-path="../语言参考/命名空间/全局空间.html">
<a href="../语言参考/命名空间/全局空间.html">
全局空间
</a>
</li>
<li class="chapter " data-level="1.1.1.10.9" data-path="../语言参考/命名空间/使用命名空间 - 后备全局函数和常量.html">
<a href="../语言参考/命名空间/使用命名空间 - 后备全局函数和常量.html">
使用命名空间 - 后备全局函数和常量
</a>
</li>
<li class="chapter " data-level="1.1.1.10.10" data-path="../语言参考/命名空间/名称解析规则.html">
<a href="../语言参考/命名空间/名称解析规则.html">
名称解析规则
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.11" data-path="../语言参考/Errors.html">
<a href="../语言参考/Errors.html">
Errors
</a>
</li>
<li class="chapter " data-level="1.1.1.12" data-path="../语言参考/异常处理.html">
<a href="../语言参考/异常处理.html">
异常处理
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.12.1" data-path="../语言参考/异常处理/基本语法.html">
<a href="../语言参考/异常处理/基本语法.html">
基本语法
</a>
</li>
<li class="chapter " data-level="1.1.1.12.2" data-path="../语言参考/异常处理/扩展 PHP 内置的异常处理类.html">
<a href="../语言参考/异常处理/扩展 PHP 内置的异常处理类.html">
扩展 PHP 内置的异常处理类
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.13" data-path="../语言参考/生成器.html">
<a href="../语言参考/生成器.html">
生成器
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.13.1" data-path="../语言参考/生成器/生成器总览.html">
<a href="../语言参考/生成器/生成器总览.html">
生成器总览
</a>
</li>
<li class="chapter " data-level="1.1.1.13.2" data-path="../语言参考/生成器/生成器语法.html">
<a href="../语言参考/生成器/生成器语法.html">
生成器语法
</a>
</li>
<li class="chapter " data-level="1.1.1.13.3" data-path="../语言参考/生成器/生成器与 Iterator 对象比较.html">
<a href="../语言参考/生成器/生成器与 Iterator 对象比较.html">
生成器与 Iterator 对象比较
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.14" data-path="../语言参考/引用的解释.html">
<a href="../语言参考/引用的解释.html">
引用的解释
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.14.1" data-path="../语言参考/引用的解释/引用是什么.html">
<a href="../语言参考/引用的解释/引用是什么.html">
引用是什么
</a>
</li>
<li class="chapter " data-level="1.1.1.14.2" data-path="../语言参考/引用的解释/引用不是什么.html">
<a href="../语言参考/引用的解释/引用不是什么.html">
引用不是什么
</a>
</li>
<li class="chapter " data-level="1.1.1.14.3" data-path="../语言参考/引用的解释/引用做什么.html">
<a href="../语言参考/引用的解释/引用做什么.html">
引用做什么
</a>
</li>
<li class="chapter " data-level="1.1.1.14.4" data-path="../语言参考/引用的解释/引用传递.html">
<a href="../语言参考/引用的解释/引用传递.html">
引用传递
</a>
</li>
<li class="chapter " data-level="1.1.1.14.5" data-path="../语言参考/引用的解释/引用返回.html">
<a href="../语言参考/引用的解释/引用返回.html">
引用返回
</a>
</li>
<li class="chapter " data-level="1.1.1.14.6" data-path="../语言参考/引用的解释/取消引用.html">
<a href="../语言参考/引用的解释/取消引用.html">
取消引用
</a>
</li>
<li class="chapter " data-level="1.1.1.14.7" data-path="../语言参考/引用的解释/引用定位.html">
<a href="../语言参考/引用的解释/引用定位.html">
引用定位
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.15" data-path="../语言参考/预定义变量.html">
<a href="../语言参考/预定义变量.html">
预定义变量
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.15.1" data-path="../语言参考/预定义变量/超全局变量.html">
<a href="../语言参考/预定义变量/超全局变量.html">
超全局变量
</a>
</li>
<li class="chapter " data-level="1.1.1.15.2" data-path="../语言参考/预定义变量/$GLOBALS.html">
<a href="../语言参考/预定义变量/$GLOBALS.html">
$GLOBALS
</a>
</li>
<li class="chapter " data-level="1.1.1.15.3" data-path="../语言参考/预定义变量/$_GET.html">
<a href="../语言参考/预定义变量/$_GET.html">
$_GET
</a>
</li>
<li class="chapter " data-level="1.1.1.15.4" data-path="../语言参考/预定义变量/$_POST.html">
<a href="../语言参考/预定义变量/$_POST.html">
$_POST
</a>
</li>
<li class="chapter " data-level="1.1.1.15.5" data-path="../语言参考/预定义变量/$_COOKIE.html">
<a href="../语言参考/预定义变量/$_COOKIE.html">
$_COOKIE
</a>
</li>
<li class="chapter " data-level="1.1.1.15.6" data-path="../语言参考/预定义变量/$_REQUEST.html">
<a href="../语言参考/预定义变量/$_REQUEST.html">
$_REQUEST
</a>
</li>
<li class="chapter " data-level="1.1.1.15.7" data-path="../语言参考/预定义变量/$_FILES.html">
<a href="../语言参考/预定义变量/$_FILES.html">
$_FILES
</a>
</li>
<li class="chapter " data-level="1.1.1.15.8" data-path="../语言参考/预定义变量/$_SESSION.html">
<a href="../语言参考/预定义变量/$_SESSION.html">
$_SESSION
</a>
</li>
<li class="chapter " data-level="1.1.1.15.9" data-path="../语言参考/预定义变量/$_SERVER.html">
<a href="../语言参考/预定义变量/$_SERVER.html">
$_SERVER
</a>
</li>
<li class="chapter " data-level="1.1.1.15.10" data-path="../语言参考/预定义变量/$_ENV.html">
<a href="../语言参考/预定义变量/$_ENV.html">
$_ENV
</a>
</li>
<li class="chapter " data-level="1.1.1.15.11" data-path="../语言参考/预定义变量/$http_response_header.html">
<a href="../语言参考/预定义变量/$http_response_header.html">
$http_response_header
</a>
</li>
<li class="chapter " data-level="1.1.1.15.12" data-path="../语言参考/预定义变量/$argc.html">
<a href="../语言参考/预定义变量/$argc.html">
$argc
</a>
</li>
<li class="chapter " data-level="1.1.1.15.13" data-path="../语言参考/预定义变量/$argv.html">
<a href="../语言参考/预定义变量/$argv.html">
$argv
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.16" data-path="../语言参考/预定义异常.html">
<a href="../语言参考/预定义异常.html">
预定义异常
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.16.1" data-path="../语言参考/预定义异常/Exception.html">
<a href="../语言参考/预定义异常/Exception.html">
Exception
</a>
</li>
<li class="chapter " data-level="1.1.1.16.2" data-path="../语言参考/预定义异常/ErrorException.html">
<a href="../语言参考/预定义异常/ErrorException.html">
ErrorException
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.17" data-path="../语言参考/预定义接口.html">
<a href="../语言参考/预定义接口.html">
预定义接口
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.17.1" data-path="../语言参考/预定义接口/Traversable.html">
<a href="../语言参考/预定义接口/Traversable.html">
Traversable
</a>
</li>
<li class="chapter " data-level="1.1.1.17.2" data-path="../语言参考/预定义接口/Iterator.html">
<a href="../语言参考/预定义接口/Iterator.html">
Iterator
</a>
</li>
<li class="chapter " data-level="1.1.1.17.3" data-path="../语言参考/预定义接口/IteratorAggregate.html">
<a href="../语言参考/预定义接口/IteratorAggregate.html">
IteratorAggregate
</a>
</li>
<li class="chapter " data-level="1.1.1.17.4" data-path="../语言参考/预定义接口/ArrayAccess.html">
<a href="../语言参考/预定义接口/ArrayAccess.html">
ArrayAccess
</a>
</li>
<li class="chapter " data-level="1.1.1.17.5" data-path="../语言参考/预定义接口/Serializable.html">
<a href="../语言参考/预定义接口/Serializable.html">
Serializable
</a>
</li>
<li class="chapter " data-level="1.1.1.17.6" data-path="../语言参考/预定义接口/Closure.html">
<a href="../语言参考/预定义接口/Closure.html">
Closure
</a>
</li>
<li class="chapter " data-level="1.1.1.17.7" data-path="../语言参考/预定义接口/Generator.html">
<a href="../语言参考/预定义接口/Generator.html">
Generator
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.18" data-path="../语言参考/上下文选项和参数.html">
<a href="../语言参考/上下文选项和参数.html">
上下文选项和参数
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.18.1" data-path="../语言参考/上下文选项和参数/套接字上下文选项.html">
<a href="../语言参考/上下文选项和参数/套接字上下文选项.html">
套接字上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.2" data-path="../语言参考/上下文选项和参数/HTTP 上下文选项.html">
<a href="../语言参考/上下文选项和参数/HTTP 上下文选项.html">
HTTP 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.3" data-path="../语言参考/上下文选项和参数/FTP 上下文选项.html">
<a href="../语言参考/上下文选项和参数/FTP 上下文选项.html">
FTP 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.4" data-path="../语言参考/上下文选项和参数/SSL 上下文选项.html">
<a href="../语言参考/上下文选项和参数/SSL 上下文选项.html">
SSL 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.5" data-path="../语言参考/上下文选项和参数/CURL 上下文选项.html">
<a href="../语言参考/上下文选项和参数/CURL 上下文选项.html">
CURL 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.6" data-path="../语言参考/上下文选项和参数/Phar 上下文选项.html">
<a href="../语言参考/上下文选项和参数/Phar 上下文选项.html">
Phar 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.7" data-path="../语言参考/上下文选项和参数/MongoDB 上下文选项.html">
<a href="../语言参考/上下文选项和参数/MongoDB 上下文选项.html">
MongoDB 上下文选项
</a>
</li>
<li class="chapter " data-level="1.1.1.18.8" data-path="../语言参考/上下文选项和参数/Context 参数.html">
<a href="../语言参考/上下文选项和参数/Context 参数.html">
Context 参数
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.1.19" data-path="../语言参考/支持的协议和封装协议.html">
<a href="../语言参考/支持的协议和封装协议.html">
支持的协议和封装协议
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.1.19.1" data-path="../语言参考/支持的协议和封装协议/file.html">
<a href="../语言参考/支持的协议和封装协议/file.html">
file://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.2" data-path="../语言参考/支持的协议和封装协议/http.html">
<a href="../语言参考/支持的协议和封装协议/http.html">
http://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.3" data-path="../语言参考/支持的协议和封装协议/ftp.html">
<a href="../语言参考/支持的协议和封装协议/ftp.html">
ftp://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.4" data-path="../语言参考/支持的协议和封装协议/php.html">
<a href="../语言参考/支持的协议和封装协议/php.html">
php://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.5" data-path="../语言参考/支持的协议和封装协议/zlib.html">
<a href="../语言参考/支持的协议和封装协议/zlib.html">
zlib://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.6" data-path="../语言参考/支持的协议和封装协议/data.html">
<a href="../语言参考/支持的协议和封装协议/data.html">
data://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.7" data-path="../语言参考/支持的协议和封装协议/global.html">
<a href="../语言参考/支持的协议和封装协议/global.html">
global://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.8" data-path="../语言参考/支持的协议和封装协议/phar.html">
<a href="../语言参考/支持的协议和封装协议/phar.html">
phar://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.9" data-path="../语言参考/支持的协议和封装协议/ssh2.html">
<a href="../语言参考/支持的协议和封装协议/ssh2.html">
ssh2://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.10" data-path="../语言参考/支持的协议和封装协议/rar.html">
<a href="../语言参考/支持的协议和封装协议/rar.html">
rar://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.11" data-path="../语言参考/支持的协议和封装协议/ogg.html">
<a href="../语言参考/支持的协议和封装协议/ogg.html">
ogg://
</a>
</li>
<li class="chapter " data-level="1.1.1.19.12" data-path="../语言参考/支持的协议和封装协议/expect.html">
<a href="../语言参考/支持的协议和封装协议/expect.html">
expect://
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2" data-path="../函数参考.html">
<a href="../函数参考.html">
函数参考
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.1" data-path="../函数参考/影响 PHP 行为的扩展.html">
<a href="../函数参考/影响 PHP 行为的扩展.html">
影响 PHP 行为的扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.1.1" data-path="../函数参考/影响 PHP 行为的扩展/错误处理和日志记录.html">
<a href="../函数参考/影响 PHP 行为的扩展/错误处理和日志记录.html">
错误处理和日志记录
</a>
</li>
<li class="chapter " data-level="1.1.2.1.2" data-path="../函数参考/影响 PHP 行为的扩展/输出缓冲控制.html">
<a href="../函数参考/影响 PHP 行为的扩展/输出缓冲控制.html">
输出缓冲控制
</a>
</li>
<li class="chapter " data-level="1.1.2.1.3" data-path="../函数参考/影响 PHP 行为的扩展/PHP 选项和信息.html">
<a href="../函数参考/影响 PHP 行为的扩展/PHP 选项和信息.html">
PHP 选项和信息
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.2" data-path="../函数参考/加密扩展.html">
<a href="../函数参考/加密扩展.html">
加密扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.2.1" data-path="../函数参考/加密扩展/Hash.html">
<a href="../函数参考/加密扩展/Hash.html">
Hash
</a>
</li>
<li class="chapter " data-level="1.1.2.2.2" data-path="../函数参考/加密扩展/OpenSSL.html">
<a href="../函数参考/加密扩展/OpenSSL.html">
OpenSSL
</a>
</li>
<li class="chapter " data-level="1.1.2.2.3" data-path="../函数参考/加密扩展/密码散列算法.html">
<a href="../函数参考/加密扩展/密码散列算法.html">
密码散列算法
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.3" data-path="../函数参考/数据库扩展.html">
<a href="../函数参考/数据库扩展.html">
数据库扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.3.1" data-path="../函数参考/数据库扩展/数据库抽象层.html">
<a href="../函数参考/数据库扩展/数据库抽象层.html">
数据库抽象层
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.3.1.1" data-path="../函数参考/数据库扩展/数据库抽象层/PDO.html">
<a href="../函数参考/数据库扩展/数据库抽象层/PDO.html">
PDO
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.4" data-path="../函数参考/日期与时间相关扩展.html">
<a href="../函数参考/日期与时间相关扩展.html">
日期与时间相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.4.1" data-path="../函数参考/日期与时间相关扩展/日期与时间.html">
<a href="../函数参考/日期与时间相关扩展/日期与时间.html">
日期与时间
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.5" data-path="../函数参考/文件系统相关扩展.html">
<a href="../函数参考/文件系统相关扩展.html">
文件系统相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.5.1" data-path="../函数参考/文件系统相关扩展/目录.html">
<a href="../函数参考/文件系统相关扩展/目录.html">
目录
</a>
</li>
<li class="chapter " data-level="1.1.2.5.2" data-path="../函数参考/文件系统相关扩展/文件系统.html">
<a href="../函数参考/文件系统相关扩展/文件系统.html">
文件系统
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.6" data-path="../函数参考/国际化与字符编码支持.html">
<a href="../函数参考/国际化与字符编码支持.html">
国际化与字符编码支持
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.6.1" data-path="../函数参考/国际化与字符编码支持/iconv.html">
<a href="../函数参考/国际化与字符编码支持/iconv.html">
iconv
</a>
</li>
<li class="chapter " data-level="1.1.2.6.2" data-path="../函数参考/国际化与字符编码支持/多字节字符串.html">
<a href="../函数参考/国际化与字符编码支持/多字节字符串.html">
多字节字符串
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.7" data-path="../函数参考/图像生成和处理.html">
<a href="../函数参考/图像生成和处理.html">
图像生成和处理
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.7.1" data-path="../函数参考/图像生成和处理/GD.html">
<a href="../函数参考/图像生成和处理/GD.html">
GD
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.8" data-path="../函数参考/邮件相关扩展.html">
<a href="../函数参考/邮件相关扩展.html">
邮件相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.8.1" data-path="../函数参考/邮件相关扩展/邮件.html">
<a href="../函数参考/邮件相关扩展/邮件.html">
邮件
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.9" data-path="../函数参考/数学扩展.html">
<a href="../函数参考/数学扩展.html">
数学扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.9.1" data-path="../函数参考/数学扩展/任意精度数学.html">
<a href="../函数参考/数学扩展/任意精度数学.html">
任意精度数学
</a>
</li>
<li class="chapter " data-level="1.1.2.9.2" data-path="../函数参考/数学扩展/数学.html">
<a href="../函数参考/数学扩展/数学.html">
数学
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.10" data-path="../函数参考/进程控制扩展.html">
<a href="../函数参考/进程控制扩展.html">
进程控制扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.10.1" data-path="../函数参考/进程控制扩展/程序执行.html">
<a href="../函数参考/进程控制扩展/程序执行.html">
程序执行
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.11" data-path="../函数参考/其他基本扩展.html">
<a href="../函数参考/其他基本扩展.html">
其他基本扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.11.1" data-path="../函数参考/其他基本扩展/JSON.html">
<a href="../函数参考/其他基本扩展/JSON.html">
JSON
</a>
</li>
<li class="chapter " data-level="1.1.2.11.2" data-path="../函数参考/其他基本扩展/杂项.html">
<a href="../函数参考/其他基本扩展/杂项.html">
杂项
</a>
</li>
<li class="chapter " data-level="1.1.2.11.3" data-path="../函数参考/其他基本扩展/PHP 标准库.html">
<a href="../函数参考/其他基本扩展/PHP 标准库.html">
PHP 标准库
</a>
</li>
<li class="chapter " data-level="1.1.2.11.4" data-path="../函数参考/其他基本扩展/Streams.html">
<a href="../函数参考/其他基本扩展/Streams.html">
Streams
</a>
</li>
<li class="chapter " data-level="1.1.2.11.5" data-path="../函数参考/其他基本扩展/Tokenizer.html">
<a href="../函数参考/其他基本扩展/Tokenizer.html">
Tokenizer
</a>
</li>
<li class="chapter " data-level="1.1.2.11.6" data-path="../函数参考/其他基本扩展/URL.html">
<a href="../函数参考/其他基本扩展/URL.html">
URL
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.12" data-path="../函数参考/其他服务.html">
<a href="../函数参考/其他服务.html">
其他服务
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.12.1" data-path="../函数参考/其他服务/cURL.html">
<a href="../函数参考/其他服务/cURL.html">
cURL
</a>
</li>
<li class="chapter " data-level="1.1.2.12.2" data-path="../函数参考/其他服务/网络.html">
<a href="../函数参考/其他服务/网络.html">
网络
</a>
</li>
<li class="chapter " data-level="1.1.2.12.3" data-path="../函数参考/其他服务/Sockets.html">
<a href="../函数参考/其他服务/Sockets.html">
Sockets
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.13" data-path="../函数参考/Session 扩展.html">
<a href="../函数参考/Session 扩展.html">
Session 扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.13.1" data-path="../函数参考/Session 扩展/Session.html">
<a href="../函数参考/Session 扩展/Session.html">
Session
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.14" data-path="../函数参考/文本处理.html">
<a href="../函数参考/文本处理.html">
文本处理
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.14.1" data-path="../函数参考/文本处理/正则表达式.html">
<a href="../函数参考/文本处理/正则表达式.html">
正则表达式
</a>
</li>
<li class="chapter " data-level="1.1.2.14.2" data-path="../函数参考/文本处理/字符串.html">
<a href="../函数参考/文本处理/字符串.html">
字符串
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.15" data-path="../函数参考/变量与类型相关扩展.html">
<a href="../函数参考/变量与类型相关扩展.html">
变量与类型相关扩展
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.15.1" data-path="../函数参考/变量与类型相关扩展/数组.html">
<a href="../函数参考/变量与类型相关扩展/数组.html">
数组
</a>
</li>
<li class="chapter " data-level="1.1.2.15.2" data-path="../函数参考/变量与类型相关扩展/类与对象.html">
<a href="../函数参考/变量与类型相关扩展/类与对象.html">
类与对象
</a>
</li>
<li class="chapter " data-level="1.1.2.15.3" data-path="../函数参考/变量与类型相关扩展/字符类型检测.html">
<a href="../函数参考/变量与类型相关扩展/字符类型检测.html">
字符类型检测
</a>
</li>
<li class="chapter " data-level="1.1.2.15.4" data-path="../函数参考/变量与类型相关扩展/过滤器.html">
<a href="../函数参考/变量与类型相关扩展/过滤器.html">
过滤器
</a>
</li>
<li class="chapter " data-level="1.1.2.15.5" data-path="../函数参考/变量与类型相关扩展/函数处理.html">
<a href="../函数参考/变量与类型相关扩展/函数处理.html">
函数处理
</a>
</li>
<li class="chapter " data-level="1.1.2.15.6" data-path="../函数参考/变量与类型相关扩展/反射.html">
<a href="../函数参考/变量与类型相关扩展/反射.html">
反射
</a>
</li>
<li class="chapter " data-level="1.1.2.15.7" data-path="../函数参考/变量与类型相关扩展/变量.html">
<a href="../函数参考/变量与类型相关扩展/变量.html">
变量
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.2.16" data-path="../函数参考/XML 操作.html">
<a href="../函数参考/XML 操作.html">
XML 操作
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.2.16.1" data-path="../函数参考/XML 操作/SimpleXML.html">
<a href="../函数参考/XML 操作/SimpleXML.html">
SimpleXML
</a>
</li>
<li class="chapter " data-level="1.1.2.16.2" data-path="../函数参考/XML 操作/XML 解析器.html">
<a href="../函数参考/XML 操作/XML 解析器.html">
XML 解析器
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.3" data-path="../会话和安全.html">
<a href="../会话和安全.html">
会话和安全
</a>
<ul class="articles">
<li class="chapter active" data-level="1.1.3.1" data-path="会话管理基础.html">
<a href="会话管理基础.html">
会话管理基础
</a>
</li>
<li class="chapter " data-level="1.1.3.2" data-path="和会话安全相关的配置项.html">
<a href="和会话安全相关的配置项.html">
和会话安全相关的配置项
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.4" data-path="../PHP 的命令行模式.html">
<a href="../PHP 的命令行模式.html">
PHP 的命令行模式
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.4.1" data-path="../PHP 的命令行模式/内置的 Web 服务器.html">
<a href="../PHP 的命令行模式/内置的 Web 服务器.html">
内置的 Web 服务器
</a>
</li>
<li class="chapter " data-level="1.1.4.2" data-path="../PHP 的命令行模式/和命令行模式相关的配置项.html">
<a href="../PHP 的命令行模式/和命令行模式相关的配置项.html">
和命令行模式相关的配置项
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.1.5" data-path="../垃圾回收机制.html">
<a href="../垃圾回收机制.html">
垃圾回收机制
</a>
</li>
<li class="chapter " data-level="1.1.6" data-path="../PHP 类型比较表.html">
<a href="../PHP 类型比较表.html">
PHP 类型比较表
</a>
</li>
<li class="chapter " data-level="1.1.7" data-path="../PSR.html">
<a href="../PSR.html">
PSR
</a>
<ul class="articles">
<li class="chapter " data-level="1.1.7.1" data-path="../PSR/PSR-1 基础编码规范.html">
<a href="../PSR/PSR-1 基础编码规范.html">
PSR-1 基础编码规范
</a>
</li>
<li class="chapter " data-level="1.1.7.2" data-path="../PSR/PSR-4 自动加载规范.html">
<a href="../PSR/PSR-4 自动加载规范.html">
PSR-4 自动加载规范
</a>
</li>
<li class="chapter " data-level="1.1.7.3" data-path="../PSR/PSR-12 编码规范扩充.html">
<a href="../PSR/PSR-12 编码规范扩充.html">
PSR-12 编码规范扩充
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
本书使用 GitBook 发布
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="../.." >会话管理基础</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="会话管理基础">会话管理基础</h1>
<ul>
<li><a href="#会话安全">会话安全</a></li>
<li><a href="#严格会话管理">严格会话管理</a></li>
<li><a href="#重新生成会话-id">重新生成会话 ID</a></li>
<li><a href="#会话中数据的删除">会话中数据的删除</a></li>
<li><a href="#会话和锁定">会话和锁定</a></li>
<li><a href="#活跃会话">活跃会话</a></li>
<li><a href="#会话和自动登录">会话和自动登录</a></li>
<li><a href="#csrf">CSRF</a></li>
</ul>
<h2 id="会话安全">会话安全</h2>
<p>会话模块无法保证存储在会话中的信息只能被创建会话的用户本人可见。需要采取额外的手段来确保会话中的机密信息,至于采取何种方式来保护机密信息,取决于在会话中存储的数据。评估会话中存储的数据的重要性,以及为此增加额外的保护机制,通常需要付出一定的代价,同时会降低便利性。例如,如果你需要保护用户免受社会工程学攻击,你需要启用 <code>session.use_only_cookies</code> 选项。这就要求用户在使用过程中,必须把浏览器设置为接受 Cookie ,否则就无法正常使用会话功能了。</p>
<p>有很多种方式都可以导致会话 ID 被泄露给第三方。例如, JavaScript 注入, URL 中包含会话 ID ,数据包侦听, 或者直接访问你的物理设备等。如果会话 ID 被泄漏给第三方,那么第三方就可以通过这个会话 ID 访问全部的资源。首先,如果在 URL 中包含了会话 ID ,并且访问了外部的站点,那么你的会话 ID 可能在外部站点的访问日志中被记录。另外,攻击者也可以监听你的网络通信,如果通信未加密,那么会话 ID 将会在网络中以明文的形式进行传输。针对这种情况的解决方案就是在服务端配置 SSL / TLS ,另外,使用 HSTS 可以达到更高的安全性。注意,即使使用 HTTPS 协议,也无法永远保证机密数据不被泄漏。</p>
<h2 id="严格会话管理">严格会话管理</h2>
<p>PHP 是以自适应的方式来管理会话的,这种方式使用起来很灵活,但是同样也带来了一定的风险。当启用 <code>session.use_strict_mode</code> 这个配置项,并且所用的会话存储器支持的话,未经初始化的会话 ID 会被拒绝,并为其生成一个全新的会话,这可以避免攻击者使用一个已知的会话 ID 来进行攻击。例如,攻击者可以通过邮件给受害者发送一个包含会话 ID 的链接: <a href="http://localhost/index.php?PHPSESSID=123" target="_blank">http://localhost/index.php?PHPSESSID=123</a> ,如果启用了 <code>session.use_trans_sid</code> 配置项,那么受害者将会使用攻击者所提供的会话 ID 开始一个新的会话。</p>
<p>在浏览器一侧,可以为用来保存会话 ID 的 Cookie 设置域,路径,仅允许 HTTP 访问,必须使用 HTTPS 访问等安全属性,攻击者可以利用浏览器的这些特性来设置永久可用的会话 ID 。仅仅设置 <code>session.use_only_cookies</code> 配置项无法解决这个问题。设置 <code>session.use_strict_mode = On</code> ,来拒绝未经初始化的会话 ID 。</p>
<p>虽然使用 <code>session.use_strict_mode</code> 配置项可以降低灵活会话管理方式所带来的风险,攻击者还是通过利用 JavaScript 注入等手段,强制用户使用由攻击者创建的并且经过了正常的初始化的会话 ID 。如果已经启用了 <code>session.use_strict_mode</code> 配置项,同时使用基于时间戳的会话管理,并且通过调用 <code>session_regenerate_id()</code> 函数来重新生成会话 ID ,那么,攻击者生成的会话 ID 就可以被删除掉了。</p>
<p>当发生对过期会话访问的时候,你应该保存活跃会话的所有数据,以备后续分析使用。然后让用户退出当前的会话,并且重新登录。防止攻击者继续使用“偷”来的会话。对过期会话数据的访问并不总是意味着正在遭受攻击。不稳定的网络状况,或者不正确的会话删除行为,都会导致合法的用户产生对过期会话数据访问行为。</p>
<p>使用 <code>session_create_id()</code> 函数允许开发者在会话 ID 中增加用户 ID 作为前缀,以确保用户访问到正确对应的会话数据。要使用这个函数,请确保启用了 <code>session.use_strict_mode</code> 配置项,否则恶意用户可能会伪造其他用户的会话 ID 。</p>
<h2 id="重新生成会话-id">重新生成会话 ID</h2>
<p>虽然 <code>session.use_strict_mode</code> 配置项可以降低风险,但是还不够。为了确保会话安全,开发者还需要使用 <code>session_regenerate_id()</code> 函数。会话 ID 重新生成机制可以有效的降低会话被窃取的风险,所以,必须周期性的调用 <code>session_regenerate_id()</code> 函数来重新生成会话 ID ,例如,对于机密内容,每隔 15 分钟就重新生成会话 ID 。这样一来,即使会话 ID 被窃取,那么攻击者所得到的会话 ID 也会很快的过期,如果他们进一步访问,就会产生对过期会话数据访问的错误。当用户成功通过认证之后,必须为其重新生成会话 ID 。并且,必须在向 <code>$_SESSION</code> 中保存用户认证信息之前调用 <code>session_regenerate_id()</code> 函数。请确保只有新的会话包含用户认证信息。</p>
<p>开发者不要依赖 <code>session.gc_maxlifetime</code> 配置项。因为攻击者可以在受害者的会话过期之前产生访问,并且维持这个会话的活动,以保证这个会话不会过期。实际上,你需要自己实现基于时间戳的会话数据管理机制。虽然会话管理器可以透明的管理时间戳,但是这个特性尚未完整的实现。在 GC 发生之前,旧的会话数据还得保存,同时,开发者还得保证过期的会话数据已经被移除。但是,开发者又不能立即移除活跃会话中的数据。所以,不要在活跃会话上调用 <code>session_regenerate_id(true)</code> 和 <code>session_destroy()</code> 函数。这听起来有点自相矛盾,但是事实上必须得这么做。默认情况下, <code>session_regenerate_id()</code> 函数不会删除旧的会话,所以即使重生了会话 ID ,旧的会话可能还是可用的。开发者需要使用时间戳等机制,来确保旧的会话数据不会再次被访问。立即删除活跃会话可能会带来非预期的一些影响。例如,在网络状态不稳定,或者有并发请求到达 Web 服务器的情况下, 立即删除活跃会话可能导致个别请求会话失效的问题。立即删除活跃会话也无法检测可能存在的恶意访问。作为替代方案,需要在 <code>$_SESSION</code> 中设置一个很短的过期时间,然后根据这个时间戳来判断后续的访问是被允许的还是被禁止的。在调用 <code>session_regenerate_id()</code> 函数之后,不能立即禁止对旧的会话数据的访问,应该再一小段之间之后再禁止访问。例如,在稳定的网络条件下,可以设置为几秒钟,在不稳定的网络条件下,可以设置为几分钟。如果用户访问了已经过期的会话数据,那么应该禁止访问。建议从会话中移除这个用户的认证信息,因为这看起来像是在遭受攻击。</p>
<p>如果攻击者设置了不可删除的 Cookie ,那么使用 <code>session.use_only_cookies</code> 和 <code>session_regenerate_id()</code> 函数会导致正常用户遭受拒绝服务的问题。如果发生这种情况,请让用户删除 Cookie 并且警告用户他可能面临一些安全问题。攻击者可以通过恶意的 Web 应用、浏览器插件以及对安全性较差的物理设备进行攻击来伪造恶意的 Cookie 。</p>
<h2 id="会话中数据的删除">会话中数据的删除</h2>
<p>过期的会话中的数据应该是被删除的,并且不可访问。现在的会话模块尚未很好的支持这种特性。应该尽可能快的删除过期会话中的数据。但是,活跃会话一定不要立即删除。为了能够同时满足这两点要求,你需要自己来实现基于时间戳的会话数据管理机制。在 <code>$_SESSION</code> 中设置会话过期时间戳,并且对其进行管理,以便能够阻止对于过期会话的访问。当发生对于过期会话的访问时,建议从相关用户的所有会话中删除认证信息,并且要求用户重新认证。对于过期会话数据的访问可能是一种攻击行为,为了保护会话数据,你需要追踪每个用户的活跃会话。</p>
<p>当用户处于不稳定的网络,或者 Web 应用存在并发的请求的时候,也可能发生对于过期会话数据的访问。服务器尝试为用户设置新的会话 ID ,但是很可能由于网络原因,导致 Set-Cookie 的数据包无法到达用户的浏览器。当通过 <code>session_regenerate_id()</code> 函数为一个连接生成新的会话 ID 之后,其他的并发连接可能尚未得到这个新的会话 ID 。因此,不能立即阻止对于过期会话数据的访问,而是要延迟一个很小的时间段,这就是为什么需要实现基于时间戳的会话管理。简而言之,不要在调用 <code>session_regenerate_id()</code> 或者 <code>session_destroy()</code> 函数的时候立即删除旧的会话数据,而是要通过一个时间戳来控制后续对于这个旧会话数据的访问。从会话存储中删除数据的工作交给 <code>session_gc()</code> 函数来完成。</p>
<h2 id="会话和锁定">会话和锁定</h2>
<p>默认情况下,为了保证会话数据在多个请求之间的一致性,对于会话数据的访问是加锁进行的。但是,这种锁定机制也会导致被攻击者利用,来进行对于用户的拒绝服务攻击。为了降低这种风险,请在访问会话数据的时候,尽可能的缩短锁定的时间。当某个请求不需要更新会话数据的时候,使用只读模式访问会话数据。也就是说,开启会话时使用该选项: <code>session_start(['read_and_close' => true])</code> 。另外,如果需要更新会话数据,那么在更新完毕之后,马上调用 <code>session_commit()</code> 函数来释放对于会话数据的锁。当会话不活跃的时候,当前的会话模块不会检测对于 <code>$_SESSION</code> 的修改。你需要自己来保证在会话处于不活跃状态的时候,不要去修改它。</p>
<h2 id="活跃会话">活跃会话</h2>
<p>开发者需要自己来追踪每个用户的活跃会话,要知道每个用户创建了多少活跃会话,每个活跃会话来自哪个 IP 地址,活跃了多长时间等。 PHP 不会自动完成这项工作,需要开发者来完成。有很多种方式可以做到追踪用户的活跃会话。你可以通过在数据库中存储会话信息来跟踪用户会话。由于会话是可以被垃圾收集器收集掉的,所以你也需要处理被收集掉的会话数据,以保证数据库中的数据和真实的活跃会话数据的一致性。一种很简单的方式就是使用用户 ID 作为会话 ID 前缀,并且保存必要的信息到 <code>$_SESSION</code> 中。大部分的数据库产品对于字符串前缀查询都有很好的性能表现。为了实现这种方式,可以使用 <code>session_regenerate_id()</code> 和 <code>session_create_id()</code> 函数。要能够检测对于过期会话数据的访问,基于时间戳的会话数据管理机制是必不可少的。当检测到对于过期会话数据的访问时,你应该从相关用户的活跃会话中删除认证信息,避免攻击者持续使用盗取的会话。</p>
<h2 id="会话和自动登录">会话和自动登录</h2>
<p>开发者不应该通过使用长生命周期的会话 ID 来实现自动登录功能,因为这种方式提高了会话被窃取的风险。开发者应该自己实现自动登录的机制。在使用 <code>setcookie()</code> 函数的时候,传入安全的一次性摘要结果作为自动登录信息。在用户访问的时候,如果发现用户尚未认证,那么就去检查请求中是否包含了有效的一次性登录信息。如果包含有效的一次性登录信息,那么就去认证用户,并且重新生成新的一次性登录信息。自动登录的关键信息一定是只能使用一次,永远不要重复使用一次性登录信息。自动登录信息是长生命周期的认证信息,所以必须要尽可能的妥善保护。可以对于自动登录信息对应的 Cookie 设置路径、仅允许 HTTP 访问、仅允许安全访问等属性来加以保护,并且尽在必要的时候才传送这个 Cookie 。开发者也要提供禁用自动登录的机制,以及删除不再需要的自动登录数据的能力。</p>
<h2 id="csrf">CSRF</h2>
<p>会话和认证无法避免跨站请求伪造攻击。开发者需要自己来实现保护应用不受 CSRF 攻击的功能。大部分 Web 应用框架都提供了 CSRF 保护的特性。</p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="../会话和安全.html" class="navigation navigation-prev " aria-label="Previous page: 会话和安全">
<i class="fa fa-angle-left"></i>
</a>
<a href="和会话安全相关的配置项.html" class="navigation navigation-next " aria-label="Next page: 和会话安全相关的配置项">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"会话管理基础","level":"1.1.3.1","depth":3,"next":{"title":"和会话安全相关的配置项","level":"1.1.3.2","depth":3,"path":"docs/会话和安全/和会话安全相关的配置项.md","ref":"docs/会话和安全/和会话安全相关的配置项.md","articles":[]},"previous":{"title":"会话和安全","level":"1.1.3","depth":2,"path":"docs/会话和安全.md","ref":"docs/会话和安全.md","articles":[{"title":"会话管理基础","level":"1.1.3.1","depth":3,"path":"docs/会话和安全/会话管理基础.md","ref":"docs/会话和安全/会话管理基础.md","articles":[]},{"title":"和会话安全相关的配置项","level":"1.1.3.2","depth":3,"path":"docs/会话和安全/和会话安全相关的配置项.md","ref":"docs/会话和安全/和会话安全相关的配置项.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["back-to-top-button","chapter-fold","favicon","hide-element","lightbox","-highlight","prism","-lunr","-search","search-pro","splitter","livereload"],"root":"","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"chapter-fold":{},"prism":{"css":["prismjs/themes/prism-okaidia.css"]},"livereload":{},"splitter":{},"search-pro":{},"hide-element":{"elements":[".gitbook-link"]},"fontsettings":{"theme":"white","family":"sans","size":2},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico","appleTouch":"favicon.png","appleTouchMore":{"120x120":"favicon-120x120.png","180x180":"favicon-180x180.png"}},"lightbox":{"jquery":true,"sameUuid":false},"back-to-top-button":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"Kuriv Vesti","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"isbn":"","variables":{},"title":"PHP","language":"zh-hans","gitbook":">=3.0.0","description":"PHP 手册","direction":"ltr"},"file":{"path":"docs/会话和安全/会话管理基础.md","mtime":"2020-02-18T07:32:47.199Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-07-13T03:43:41.544Z"},"basePath":"../..","book":{"language":""}});
});
</script>
</div>
<script src="../../gitbook/gitbook.js"></script>
<script src="../../gitbook/theme.js"></script>
<script src="../../gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
<script src="../../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
<script src="../../gitbook/gitbook-plugin-hide-element/plugin.js"></script>
<script src="../../gitbook/gitbook-plugin-lightbox/js/lightbox.min.js"></script>
<script src="../../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
<script src="../../gitbook/gitbook-plugin-search-pro/search.js"></script>
<script src="../../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../../gitbook/gitbook-plugin-livereload/plugin.js"></script>
<script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>