我用的是Tp 3.2.3新版本。我在同一個控制器中有多個方法,我在方法1中寫了一個session,在方法2中為什麼不能讀呢?求解釋 .....
程式碼很簡單 就寫了一個控制器 繼承Controller 。然後裡面寫了2個 方法 ,第一個方法寫入一個session 。第二個方法讀取該 session。 語法就是 session("kkk",999); 另一個 就是 直接 echo session("kkk"); 結果 就是 讀取session那個 讀不出來。
我用的是Tp 3.2.3新版。我在同一個控制器中有多個方法,我在方法1中寫了一個session,在方法2中為什麼不能讀呢?求解釋 .....
程式碼很簡單 就寫了一個控制器 繼承Controller 。然後裡面寫了2個 方法 ,第一個方法寫入一個session 。第二個方法讀取該 session。 語法就是 session("kkk",999); 另一個 就是 直接 echo session("kkk"); 結果 就是 讀取session那個 讀不出來。
ThinkPHP
在應用初始化時, 在ThinkPHP\Library\Think\App.class.php
類別中, 若目前運作環境不是cli
, 是會自動從設定檔註冊session_start
cli
session_start
預設的設定檔ThinkPHP\Conf\convention.php
中設定的SESSION_AUTO_START
是TRUE
,即預設會自動開啟session,題主請檢查自己的設定檔是否覆寫了此設定檔,php 設定項設定檔的載入使用者自訂的會覆蓋預設的,
預設的使用者自訂設定檔Application\Common\Conf\config.php
, 檢查是否將SESSION_AUTO_START
設定為false或0 了
若不想修改配置文件, 只需要在方法開始前調用session_start即可
<code class="php"> <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ $this->show('.........'); } public function test() { //若配置文件SESSION_AUTO_START为false, 则调用session方法时都学要手动开启session session_start(); session('xxxxx', 'wodelaojia'); } public function test2() { session_start(); echo session('xxxxx'); } }</code>
配置 SESSION_AUTO_START
為 TRUE
或在使用 session
的時候 session_start