tp5.1 相同控制器不同方法session無法取出的問題


問題:在使用postman模擬訪問的時候,在同一個控制器一個方法中存入session,在另一個方法中取出session,一直都是無法取出。

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

對策:

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

官方手冊:https://www.kancloud.cn/manual/thinkphp5_1/354116

可以完美代替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

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

原文:https://www.cnblogs.com/piaobodewu/p/9321269.html


免責聲明!

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



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