Thinkphp5 的sesssion在同一個控制器不同的方法無法獲取session的原因和對策


這一段在用thinkPHP5開發微信小程序接口的時候,在同一個控制器一個方法中存入session,在另一個方法中取出session,一直都是無法取出。

查閱各種資料得到原因:thinkPHP5里面的session是給瀏覽器用的,非瀏覽器的方式是沒有辦法訪問到那個session的,只能用其他方式來代替session。 

對策:

1.(推薦)使用TP5自帶的緩存方法

可以完美代替session,甚至可以每條手動設置時間,比session更方便,

(用過tp5自帶session的肯定知道,session時間一般是固定的,用起來很僵硬)。

 

//設置緩存(有效期3600秒)
 Cache::set('name',$value,3600); //獲取緩存數據可以使用:
 Cache::get('name');

提醒一下,如果$value是數組的話要先json_encode()編碼成字符串再用

 

2.Redis方法(此方法稍微麻煩一些)

按照教程在服務器上配置好redis數據庫

使用方法直接上代碼:

//存入redis //開啟redis數據庫服務
$redis = new Redis(); //連接ridis數據庫
$redis->connect('127.0.0.1', 6379); //存入數據(有效期3600秒)
$redis->set($sessioncode,$value, 3600); //取出redis //開啟redis數據庫服務
$redis = new Redis(); //連接ridis數據庫
$redis->connect('127.0.0.1', 6379); //取出數據
$data = $redis->get($session);

同樣,提醒一下,如果$value是數組的話要先json_encode()編碼成字符串再用

 

3.使用memcache

上述三種方法均可,建議使用第一種。

 

 

(本文為原創文章,轉載請注明來自:http://www.cnblogs.com/piaobodewu/)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM