<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 會話 `ThinkPHP5.0`使用`think\Session`類進行`Session`的操作管理。 - - [Session初始化](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#-code-session-code-) - [讀取Session](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#-code-session-code--1) - [SESSION操作](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#-code-session-code--2) - [助手函數](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#u52A9u624Bu51FDu6570) - [模板輸出](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#u6A21u677Fu8F93u51FA) - [Session驅動](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#-code-session-code--3) - [Session示例](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/183828#session-) ## `Session`初始化 大多數情況,我們不需要手動進行Session初始化操作。`ThinkPHP5`會在第一次調用`Session`類的時候按照配置的參數自動初始化和開啟`Session`(如果`auto_start`設置為`true`的話),例如,我們在應用配置中添加如下配置: ``` <pre class="calibre18"> ``` <span class="hljs-string">'session'</span> => [ <span class="hljs-string">'prefix'</span> => <span class="hljs-string">'think'</span>, <span class="hljs-string">'type'</span> => <span class="hljs-string">''</span>, <span class="hljs-string">'auto_start'</span> => <span class="hljs-keyword">true</span>, ], ``` ``` 無需任何操作就可以直接調用`Session`類的相關方法,例如: ``` <pre class="calibre18"> ``` <span class="hljs-operator"><span class="hljs-title1">Session</span>:<span class="hljs-string">:<span class="hljs-function">set</span>(<span class="hljs-operator">'name'</span>,<span class="hljs-operator">'thinkphp'</span>)</span></span>; <span class="hljs-operator"><span class="hljs-title1">Session</span>:<span class="hljs-string">:<span class="hljs-function">get</span>(<span class="hljs-operator">'name'</span>)</span></span>; ``` ``` 如果你的應用不同模塊需要不同的`session`配置參數,那么可以在模塊配置文件中重新設置: ``` <pre class="calibre18"> ``` <span class="hljs-string">'session'</span> => [ <span class="hljs-string">'prefix'</span> => <span class="hljs-string">'module'</span>, <span class="hljs-string">'type'</span> => <span class="hljs-string">''</span>, <span class="hljs-string">'auto_start'</span> => <span class="hljs-keyword">true</span>, ], ``` ``` 或者在模塊的公共文件中調用`init`方法進行初始化: ``` <pre class="calibre18"> ``` Session::init([ <span class="hljs-string">'prefix'</span> => <span class="hljs-string">'module'</span>, <span class="hljs-string">'type'</span> => <span class="hljs-string">''</span>, <span class="hljs-string">'auto_start'</span> => <span class="hljs-keyword">true</span>, ]); ``` ``` > 如果你沒有使用Session類進行Session操作的話,例如直接操作`$_SESSION`,必須使用上面的方式手動初始化或者直接調用`session_start()`方法進行`session`初始化,但不建議直接操作`$_SESSION`全局變量。 ## 讀取`Session` 建議的讀取`Session`數據的方法是通過`Request`請求對象的`session`方法,例如: ``` <pre class="calibre18"> ``` <span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">controller</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Request</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span></span>{ <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span><span class="hljs-number">(Request <span class="hljs-regexp">$request</span>)</span></span>{ <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$request</span>->session(<span class="hljs-string">'user_name'</span>); <span class="hljs-comment">// 讀取二維數組</span><span class="hljs-keyword">echo</span> <span class="hljs-regexp">$request</span>->session(<span class="hljs-string">'user.name'</span>); } } ``` ``` > 通過Request對象讀取Session數據支持默認值及過濾方法,因此也更加安全,并且支持多維數組的讀取。 當然也支持使用`Session`類直接讀取數據: ``` <pre class="calibre18"> ``` <span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">controller</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Session</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span></span>{ <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span><span class="hljs-number">()</span></span>{ <span class="hljs-keyword">echo</span> Session::get(<span class="hljs-string">'user_name'</span>); <span class="hljs-keyword">echo</span> Session::get(<span class="hljs-string">'user.name'</span>); } } ``` ``` > `Session`類的`get`方法只支持最大二維數組的讀取,而`Request`對象的`session`方法可以支持任意級別的二維數組獲取。 ## `SESSION`操作 使用`think\Session`類進行`Session`的操作和管理,例如: ``` <pre class="calibre18"> ``` <span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">controller</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Session</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span></span>{ <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span><span class="hljs-number">()</span></span>{ <span class="hljs-comment">// 賦值(當前作用域)</span> Session::set(<span class="hljs-string">'name'</span>,<span class="hljs-string">'thinkphp'</span>); <span class="hljs-comment">// 賦值think作用域</span> Session::set(<span class="hljs-string">'name'</span>,<span class="hljs-string">'thinkphp'</span>,<span class="hljs-string">'think'</span>); <span class="hljs-comment">// 判斷(當前作用域)是否賦值</span> Session::has(<span class="hljs-string">'name'</span>); <span class="hljs-comment">// 判斷think作用域下面是否賦值</span> Session::has(<span class="hljs-string">'name'</span>,<span class="hljs-string">'think'</span>); <span class="hljs-comment">// 取值(當前作用域)</span> Session::get(<span class="hljs-string">'name'</span>); <span class="hljs-comment">// 取值think作用域</span> Session::get(<span class="hljs-string">'name'</span>,<span class="hljs-string">'think'</span>); <span class="hljs-comment">// 指定當前作用域</span> Session::prefix(<span class="hljs-string">'think'</span>); <span class="hljs-comment">// 刪除(當前作用域)</span> Session::delete(<span class="hljs-string">'name'</span>); <span class="hljs-comment">// 刪除think作用域下面的值</span> Session::delete(<span class="hljs-string">'name'</span>,<span class="hljs-string">'think'</span>); <span class="hljs-comment">// 清除session(當前作用域)</span> Session::clear(); <span class="hljs-comment">// 清除think作用域</span> Session::clear(<span class="hljs-string">'think'</span>); <span class="hljs-comment">// 賦值(當前作用域)</span> Session::set(<span class="hljs-string">'name.item'</span>,<span class="hljs-string">'thinkphp'</span>); <span class="hljs-comment">// 判斷(當前作用域)是否賦值</span> Session::has(<span class="hljs-string">'name.item'</span>); <span class="hljs-comment">// 取值(當前作用域)</span> Session::get(<span class="hljs-string">'name.item'</span>); <span class="hljs-comment">// 刪除(當前作用域)</span> Session::delete(<span class="hljs-string">'name.item'</span>); } } ``` ``` ## 助手函數 系統也提供了助手函數`session`完成相同的功能,例如: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 初始化session</span> session([ <span class="hljs-string">'prefix'</span> => <span class="hljs-string">'module'</span>, <span class="hljs-string">'type'</span> => <span class="hljs-string">''</span>, <span class="hljs-string">'auto_start'</span> => <span class="hljs-keyword">true</span>, ]); <span class="hljs-comment">// 賦值(當前作用域)</span> session(<span class="hljs-string">'name'</span>, <span class="hljs-string">'thinkphp'</span>); <span class="hljs-comment">// 賦值think作用域</span> session(<span class="hljs-string">'name'</span>, <span class="hljs-string">'thinkphp'</span>, <span class="hljs-string">'think'</span>); <span class="hljs-comment">// 判斷(當前作用域)是否賦值</span> session(<span class="hljs-string">'?name'</span>); <span class="hljs-comment">// 取值(當前作用域)</span> session(<span class="hljs-string">'name'</span>); <span class="hljs-comment">// 取值think作用域</span> session(<span class="hljs-string">'name'</span>, <span class="hljs-string">''</span>, <span class="hljs-string">'think'</span>); <span class="hljs-comment">// 刪除(當前作用域)</span> session(<span class="hljs-string">'name'</span>, <span class="hljs-keyword">null</span>); <span class="hljs-comment">// 清除session(當前作用域)</span> session(<span class="hljs-keyword">null</span>); <span class="hljs-comment">// 清除think作用域</span> session(<span class="hljs-keyword">null</span>, <span class="hljs-string">'think'</span>); ``` ``` ## 模板輸出 如果需要在模板中輸出Session數據,可以使用下面的方法: ``` <pre class="calibre18"> ``` {<span class="hljs-regexp">$Request</span>.session.user_name} ``` ``` 也可以支持二維數組的輸出 ``` <pre class="calibre18"> ``` {<span class="hljs-regexp">$Request</span>.session.user.name} ``` ``` ## `Session`驅動 支持指定 Session 驅動,配置文件如下: ``` <pre class="calibre18"> ``` <span class="hljs-string">'session'</span> => [ <span class="hljs-string">'prefix'</span> => <span class="hljs-string">'module'</span>, <span class="hljs-string">'type'</span> => <span class="hljs-string">'redis'</span>, <span class="hljs-string">'auto_start'</span> => <span class="hljs-keyword">true</span>, <span class="hljs-comment">// redis主機</span><span class="hljs-string">'host'</span> => <span class="hljs-string">'127.0.0.1'</span>, <span class="hljs-comment">// redis端口</span><span class="hljs-string">'port'</span> => <span class="hljs-number">6379</span>, <span class="hljs-comment">// 密碼</span><span class="hljs-string">'password'</span> => <span class="hljs-string">''</span>, ] ``` ``` 表示使用`redis`作為`session`類型。 ## Session示例 下面舉一個例子。 ``` <pre class="calibre18"> ``` <span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">controller</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Controller</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Session</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">Index</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Controller</span></span>{ <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span><span class="hljs-number">()</span></span>{ <span class="hljs-keyword">return</span> <span class="hljs-regexp">$this</span>->fetch(); } <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">save</span><span class="hljs-number">(<span class="hljs-regexp">$name</span>=<span class="hljs-string">''</span>)</span></span>{ Session::set(<span class="hljs-string">'user_name'</span>,<span class="hljs-regexp">$name</span>); <span class="hljs-regexp">$this</span>->success(<span class="hljs-string">'Session設置成功'</span>); } } ``` ``` 定義默認文件(`application/index/view/index.html`)如下: ``` <pre class="calibre18"> ``` <span class="hljs-regexp"><!doctype html></span><span class="hljs-regexp"><<span class="hljs-operator">html</span>></span><span class="hljs-regexp"><<span class="hljs-operator">head</span>></span><span class="hljs-regexp"><<span class="hljs-operator">meta</span> <span class="hljs-operator">charset</span>=<span class="hljs-string">"UTF-8"</span>></span><span class="hljs-regexp"><<span class="hljs-operator">title</span>></span>Session示例<span class="hljs-regexp"></<span class="hljs-operator">title</span>></span><span class="hljs-regexp"><<span class="hljs-operator">style</span>></span><span class="css"><span class="hljs-regexp">body</span> <span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">font-family</span>:<span class="hljs-string"><span class="hljs-operator">"Microsoft Yahei"</span>,<span class="hljs-operator">"Helvetica Neue"</span>,Helvetica,Arial,sans-serif</span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"><span class="hljs-number">16px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"><span class="hljs-number">5px</span></span></span>; }</span><span class="hljs-regexp">.form</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">15px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">16px</span></span></span>; }</span><span class="hljs-regexp">.form</span> <span class="hljs-regexp">.text</span> <span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">3px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">2px</span> <span class="hljs-number">10px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">width</span>:<span class="hljs-string"> <span class="hljs-number">240px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">height</span>:<span class="hljs-string"> <span class="hljs-number">24px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">line-height</span>:<span class="hljs-string"> <span class="hljs-number">28px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#D4D4D4</span></span></span>; }</span><span class="hljs-regexp">.form</span> <span class="hljs-regexp">.btn</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">6px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">6px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">width</span>:<span class="hljs-string"> <span class="hljs-number">120px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">16px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#D4D4D4</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">cursor</span>:<span class="hljs-string"> pointer</span></span>; <span class="hljs-operator"><span class="hljs-title1">background</span>:<span class="hljs-string"><span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">a</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">color</span>:<span class="hljs-string"> <span class="hljs-title">#868686</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">cursor</span>:<span class="hljs-string"> pointer</span></span>; }</span><span class="hljs-operator"><span class="hljs-title1">a</span>:<span class="hljs-string">hover{ text-decoration: underline</span></span>; } <span class="hljs-regexp">h2</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">color</span>:<span class="hljs-string"> <span class="hljs-title">#4288ce</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-weight</span>:<span class="hljs-string"> <span class="hljs-number">400</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">6px</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"> <span class="hljs-number">6px</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">28px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border-bottom</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">div</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">8px</span></span></span>; }</span><span class="hljs-regexp">.info</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">12px</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border-bottom</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">.copyright</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin-top</span>:<span class="hljs-string"> <span class="hljs-number">24px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">12px</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border-top</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#eee</span></span></span>; }</span></span><span class="hljs-regexp"></<span class="hljs-operator">style</span>></span><span class="hljs-regexp"></<span class="hljs-operator">head</span>></span><span class="hljs-regexp"><<span class="hljs-operator">body</span>></span><span class="hljs-regexp"><<span class="hljs-operator">h2</span>></span>Session示例<span class="hljs-regexp"></<span class="hljs-operator">h2</span>></span><span class="hljs-regexp"><<span class="hljs-operator">FORM</span> <span class="hljs-operator">method</span>=<span class="hljs-string">"post"</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"form"</span> <span class="hljs-operator">action</span>=<span class="hljs-string">"{:url('save')}"</span>></span> 輸入用戶名:<span class="hljs-regexp"><<span class="hljs-operator">INPUT</span> <span class="hljs-operator">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"text"</span> <span class="hljs-operator">name</span>=<span class="hljs-string">"name"</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"{$Request.session.user_name}"</span> ></span><span class="hljs-regexp"><<span class="hljs-operator">br</span>/></span><span class="hljs-regexp"><<span class="hljs-operator">INPUT</span> <span class="hljs-operator">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"btn"</span> <span class="hljs-operator">value</span>=<span class="hljs-string">" 保存 "</span>></span><span class="hljs-regexp"></<span class="hljs-operator">FORM</span>></span><span class="hljs-regexp"><<span class="hljs-operator">div</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"copyright"</span>></span><span class="hljs-regexp"><<span class="hljs-operator">a</span> <span class="hljs-operator">title</span>=<span class="hljs-string">"官方網站"</span> <span class="hljs-operator">href</span>=<span class="hljs-string">"http://www.thinkphp.cn"</span>></span>ThinkPHP<span class="hljs-regexp"></<span class="hljs-operator">a</span>></span><span class="hljs-regexp"><<span class="hljs-operator">span</span>></span>V5<span class="hljs-regexp"></<span class="hljs-operator">span</span>></span><span class="hljs-regexp"><<span class="hljs-operator">span</span>></span>{ 十年磨一劍-為API開發設計的高性能框架 }<span class="hljs-regexp"></<span class="hljs-operator">span</span>></span><span class="hljs-regexp"></<span class="hljs-operator">div</span>></span><span class="hljs-regexp"></<span class="hljs-operator">body</span>></span><span class="hljs-regexp"></<span class="hljs-operator">html</span>></span> ``` ``` 訪問URL地址 ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com</span> ``` ``` 頁面顯示: ![](https://img.kancloud.cn/72/a9/72a9358252fa6474c57dead184765658_488x233.png) 當我們輸入`ThinkPHP`后點擊保存按鈕 ![](https://img.kancloud.cn/2a/24/2a24bc6e237eb2435e6b3ce5d0ceb6f3_472x235.png) ![](https://img.kancloud.cn/1b/7a/1b7ac9abe7c49038bf5116d33639b142_392x234.png) 然后頁面后 用戶名輸入框中會顯示已經保存的`session`值。 ![](https://img.kancloud.cn/2a/24/2a24bc6e237eb2435e6b3ce5d0ceb6f3_472x235.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看