問題:在使用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
上述三種方法均可,建議使用第一種。