首頁 後端開發 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 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沒有走動,而是站在桌子後面完成一系列任務。它可以聽從人類的命令,折疊衣物

電腦上的cookie在哪裡 電腦上的cookie在哪裡 Dec 22, 2023 pm 03:46 PM

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的​​瀏覽器和作業系統:1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

session失效怎麼解決 session失效怎麼解決 Oct 18, 2023 pm 05:19 PM

session失效通常是由於 session 的生存時間過期或伺服器關閉導致的。其解決方法:1、延長session的生存時間;2、使用持久化儲存;3、使用cookie;4、非同步更新session;5、使用會話管理中介軟體。

See all articles