首页 后端开发 php教程 【PHP】对话存储方式详解

【PHP】对话存储方式详解

Jun 13, 2016 pm 12:51 PM
cookie nbsp path session the

【PHP】会话存储方式详解

  作者:zhanhailiang 日期:2013-03-15
登录后复制

首先确认会话是否自动开启还是需要通过session_start()来手动开启:

<span class="co0" style="color:rgb(128,128,128); font-style:italic">; 指定会话模块是否在请求开始时自动启动一个会话。默认为 0(不启动)</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Initialize session on request startup.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.auto-start</span>
session.auto_start <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> 0</span>
登录后复制

客户端存储

在客户端,会话可以存储在cookie或者通过URL参数来获取。依赖于服务器的配置:

<span class="co0" style="color:rgb(128,128,128); font-style:italic">; 指定是否在客户端用 cookie 来存放会话 ID。默认为 1(启用)</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Whether to use cookies.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.use-cookies</span>
session.use_cookies <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> 1</span>
 
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; 指定是否在客户端仅仅使用 cookie 来存放会话 ID。。启用此设定可以防止有关通过 URL 传递会话 ID 的攻击。</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; This option forces PHP to fetch and use a cookie for storing and maintaining</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; the session id. We encourage this operation as it's very helpful in combatting</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; session hijacking when not specifying and managing your own session id. It is</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; not the end all be all of session hijacking defense, but it's a good start.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.use-only-cookies</span>
session.use_only_cookies <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> 1</span>
登录后复制

如果确认存储在cookie中,则可以进一点配置会话存储在cookie中的各项配置,如cookie_name,cookie_lifetime,cookie_path,cookie_domain,cookie_secure,cookie_httponly

<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Name of the session (used as cookie name).</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.name</span>
session.name <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> PHPSESSID</span>
 
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Lifetime in seconds of cookie or, if 0, until browser is restarted.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.cookie-lifetime</span>
session.cookie_lifetime <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> 0</span>
 
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; The path for which the cookie is valid.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.cookie-path</span>
session.cookie_path <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> /</span>
 
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; The domain for which the cookie is valid.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.cookie-domain</span>
session.cookie_domain <span class="sy0" style="color:rgb(102,204,102)">=</span>
 
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.cookie-httponly</span>
session.cookie_httponly <span class="sy0" style="color:rgb(102,204,102)">=</span>
登录后复制

服务器端存储

在服务器端,同样也可以通过多种方式来存储会话。默认会话存储在文件中,此时session.save_path为创建存储文件的路径。

<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Handler used to store/retrieve data.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.save-handler</span>
session.save_handler <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> files</span>
 
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; Argument passed to save_handler.  In the case of files, this is the path</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; where data files are stored. Note: Windows users have to change this</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; variable in order to use PHP's session functions.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; The path can be defined as:</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;     session.save_path = "N;/path"</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; where N is an integer.  Instead of storing all the session files in</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; /path, what this will do is use subdirectories N-levels deep, and</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; store the session data in those directories.  This is useful if you</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; or your OS have problems with lots of files in one directory, and is</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; a more efficient layout for servers that handle lots of sessions.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; NOTE 1: PHP will not create this directory structure automatically.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;         You can use the script in the ext/session dir for that purpose.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; NOTE 2: See the section on garbage collection below if you choose to</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;         use subdirectories for session storage</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; The file storage module creates files using mode 600 by default.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; You can change that by using</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;     session.save_path = "N;MODE;/path"</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; where MODE is the octal representation of the mode. Note that this</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; does not overwrite the process's umask.</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">; http://php.net/session.save-path</span>
<span class="co0" style="color:rgb(128,128,128); font-style:italic">;session.save_path = "/tmp"</span>
登录后复制

PHP支持通过session_set_save_handler来实现会话处理器的自定义open, close, read, write, destroy, gc处理函数,常见的会话处理器包括使用内存型分配(如mm,memcache等),也可以使用数据库进行存储。由此可见,若需要会话存储与文件系统(例如用数据库PostgreSQL Session Save Handler或默认的文件存储files)协同工作的,此时有可能造成用户定制的会话处理器丢失了未存储数据的会话。若使用内存型分配存储,又需要考虑会话持久化存储问题。

接下来重点讲解memcache(d?)会话处理器。

Memcache模块提供了于memcached方便的面向过程及面向对象的接口,memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程缓存产品。
Memcache模块同时提供了一个session 处理器 (memcache).
更多关于memcached的信息请参见? http://www.memcached.org/.

memcached是一个高性能分布式的内存对象缓存系统, 通常被用于降低数据库加载压力以提高动态web应用的响应速度。
此扩展使用了libmemcached库提供的api与memcached服务端进行交互。它同样提供了一个session处理器(memcached)。 它同时提供了一个session处理器(memcached)
关于libmemcached的更多信息可以在? http://libmemcached.org/libMemcached.html查看。

memcache会话处理器配置:

session.save_handler <span class="sy0" style="color:rgb(102,204,102)">=</span><span class="re2" style="color:rgb(0,0,255)"> memcache</span>
session.save_path <span class="sy0" style="color:rgb(102,204,102)">=</span> <span class="st0" style="color:rgb(255,0,0)">"tcp://127.0.0.1:11211?persistent=0&weight=1&timeout=1&retry_interval=15,tcp://127.0.0.1:11212?persistent=0&weight=1&timeout=1&retry_interval=15,tcp://127.0.0.1:11213?persistent=0&weight=1&timeout=1&retry_interval=15,tcp://127.0.0.1:11214?persistent=0&weight=1&timeout=1&retry_interval=15"</span>
登录后复制

数据库处理器可以使用Session PgSQL来实现(此扩展被认为已无人维护)。也可以使用其它数据库来实现会话存储,只不过需要自定义处理器函数function.session-set-save-handler.php。具体自定义处理器可参见maria at junkies dot jp。

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

10种在 Windows 11 上调整亮度的方法 10种在 Windows 11 上调整亮度的方法 Dec 18, 2023 pm 02:21 PM

屏幕亮度是使用现代计算设备不可或缺的一部分,尤其是当您长时间注视屏幕时。它可以帮助您减轻眼睛疲劳,提高易读性,并轻松有效地查看内容。但是,根据您的设置,有时很难管理亮度,尤其是在具有新UI更改的Windows11上。如果您在调整亮度时遇到问题,以下是在Windows11上管理亮度的所有方法。如何在Windows11上更改亮度[10种方式解释]单显示器用户可以使用以下方法在Windows11上调整亮度。这包括使用单个显示器的台式机系统以及笔记本电脑。让我们开始吧。方法1:使用操作中心操作中心是访问

如何在Safari中关闭iPhone的隐私浏览身份验证? 如何在Safari中关闭iPhone的隐私浏览身份验证? Nov 29, 2023 pm 11:21 PM

在iOS17中,Apple为其移动操作系统引入了几项新的隐私和安全功能,其中之一是能够要求对Safari中的隐私浏览选项卡进行二次身份验证。以下是它的工作原理以及如何将其关闭。在运行iOS17或iPadOS17的iPhone或iPad上,如果您在Safari浏览器中打开了任何“无痕浏览”标签页,然后退出会话或App,Apple的浏览器现在需要面容ID/触控ID认证或密码才能再次访问它们。换句话说,如果有人在解锁您的iPhone或iPad时拿到了它,他们仍然无法在不知道您的密码的情况下查看您的隐私

Win10/11数字激活脚本MAS 2.2版本重新支持数字激活 Win10/11数字激活脚本MAS 2.2版本重新支持数字激活 Oct 16, 2023 am 08:13 AM

著名的激活脚本MAS2.2版本重新支持数字激活,方法源于@asdcorp及团队,MAS作者称之为HWID2。https://github.com/massgravel/Microsoft-Activation-Scripts下载gatherosstate.exe(非原版,已改造),带参数运行它,生成门票GenuineTicket.xml。先看一下原先的方法:gatherosstate.exePfn=xxxxxxx;DownlevelGenuineState=1再对比一下最新方法:gatheros

电脑上的cookie在哪里 电脑上的cookie在哪里 Dec 22, 2023 pm 03:46 PM

电脑上的Cookie存储在浏览器的特定位置,具体位置取决于使用的浏览器和操作系统:1、Google Chrome, 存储在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default\Cookies中等等。

cookie是存在哪里 cookie是存在哪里 Dec 20, 2023 pm 03:07 PM

Cookie通常存储在浏览器的Cookie文件夹中的,浏览器中的Cookie文件通常以二进制或SQLite格式存储,如果直接打开Cookie文件,可能会看到一些乱码或无法读取的内容,因此最好使用浏览器提供的Cookie管理界面来查看和管理Cookie。

设置Linux系统的PATH环境变量步骤 设置Linux系统的PATH环境变量步骤 Feb 18, 2024 pm 05:40 PM

Linux系统如何设置PATH环境变量在Linux系统中,PATH环境变量用于指定系统在命令行中搜索可执行文件的路径。正确设置PATH环境变量可以方便我们在任何位置执行系统命令和自定义命令。本文将介绍如何在Linux系统中设置PATH环境变量,并提供详细的代码示例。查看当前的PATH环境变量在终端中执行以下命令,可以查看当前的PATH环境变量:echo$P

2 个月不见,人形机器人 Walker S 会叠衣服了 2 个月不见,人形机器人 Walker S 会叠衣服了 Apr 03, 2024 am 08:01 AM

机器之能报道编辑:吴昕国内版的人形机器人+大模型组队,首次完成叠衣服这类复杂柔性材料的操作任务。随着融合了OpenAI多模态大模型的Figure01揭开神秘面纱,国内同行的相关进展一直备受关注。就在昨天,国内"人形机器人第一股"优必选发布了人形机器人WalkerS深入融合百度文心大模型后的首个Demo,展示了一些有趣的新功能。现在,得到百度文心大模型能力加持的WalkerS是这个样子的。和Figure01一样,WalkerS没有走动,而是站在桌子后面完成一系列任务。它可以听从人类的命令,折叠衣物

session失效怎么解决 session失效怎么解决 Oct 18, 2023 pm 05:19 PM

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

See all articles