【PHP】对话存储方式详解
【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。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









画面の明るさは、最新のコンピューティング デバイスを使用する上で不可欠な部分であり、特に長時間画面を見る場合には重要です。目の疲れを軽減し、可読性を向上させ、コンテンツを簡単かつ効率的に表示するのに役立ちます。ただし、設定によっては、特に新しい UI が変更された Windows 11 では、明るさの管理が難しい場合があります。明るさの調整に問題がある場合は、Windows 11 で明るさを管理するすべての方法を次に示します。 Windows 11で明るさを変更する方法【10の方法を解説】 シングルモニターユーザーは、次の方法でWindows 11の明るさを調整できます。これには、ラップトップだけでなく、単一のモニターを使用するデスクトップ システムも含まれます。はじめましょう。方法 1: アクション センターを使用する アクション センターにアクセスできる

iOS 17 では、Apple はモバイル オペレーティング システムにいくつかの新しいプライバシーおよびセキュリティ機能を導入しました。その 1 つは、Safari のプライベート ブラウジング タブに対して 2 段階認証を要求する機能です。その仕組みとオフにする方法は次のとおりです。 iOS 17 または iPadOS 17 を実行している iPhone または iPad では、Safari でプライベート ブラウズ タブを開いていて、再度アクセスするためにセッションまたはアプリを終了する場合、Apple のブラウザでは Face ID/Touch ID 認証またはパスコードが必要になります。言い換えれば、ロックが解除されている iPhone または iPad を誰かが手に入れても、パスコードを知らなければプライバシーを閲覧することはできません。

有名なアクティベーション スクリプト MAS2.2 バージョンでは、デジタル アクティベーションが再びサポートされています。このメソッドは @asdcorp とそのチームが考案したもので、MAS 作成者はそれを HWID2 と呼んでいます。 https://github.com/massgravel/Microsoft-Activation-Scripts から Gatherosstate.exe (オリジナルではなく、変更されたもの) をダウンロードし、パラメータを指定して実行し、AuthenticTicket.xml を生成します。まず元のメソッド: Gatherosstate.exePfn=xxxxxxx;DownlevelOriginalState=1 を確認し、次に最新のメソッド: Gatheros と比較します。

コンピュータ上の Cookie は、使用するブラウザとオペレーティング システムに応じて、ブラウザ上の特定の場所に保存されます。 1. Google Chrome、C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies に保存されます。等

Cookie は通常、ブラウザの Cookie フォルダに保存されます。ブラウザの Cookie ファイルは通常、バイナリ形式または SQLite 形式で保存されます。Cookie ファイルを直接開くと、文字化けしたり判読できないコンテンツが表示される可能性があるため、使用することをお勧めします。 Cookie を表示および管理するためにブラウザによって提供される Cookie 管理インターフェイス。

Linux システムで PATH 環境変数を設定する方法 Linux システムでは、PATH 環境変数を使用して、システムがコマンド ラインで実行可能ファイルを検索するパスを指定します。 PATH 環境変数を正しく設定すると、任意の場所でシステム コマンドやカスタム コマンドを実行できるようになります。この記事では、Linux システムで PATH 環境変数を設定する方法と詳細なコード例を紹介します。現在の PATH 環境変数を表示する ターミナルで次のコマンドを実行して、現在の PATH 環境変数を表示します: echo$P

Machine Power Report 編集者: Wu Xin 国内版の人型ロボット + 大型模型チームは、衣服を折りたたむなどの複雑で柔軟な素材の操作タスクを初めて完了しました。 OpenAIのマルチモーダル大規模モデルを統合したFigure01の公開により、国内同業者の関連動向が注目を集めている。つい昨日、中国の「ヒューマノイドロボットのナンバーワン株」であるUBTECHは、Baidu Wenxinの大型モデルと深く統合されたヒューマノイドロボットWalkerSの最初のデモを公開し、いくつかの興味深い新機能を示した。 Baidu Wenxin の大規模モデル機能の恩恵を受けた WalkerS は次のようになります。 Figure01 と同様に、WalkerS は動き回るのではなく、机の後ろに立って一連のタスクを完了します。人間の命令に従って服をたたむことができる

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。
