1. 程式人生 > >用Redis替代session改寫thinkPHP驗證碼類

用Redis替代session改寫thinkPHP驗證碼類

最近有一個專案,因為後端用的是thinkPHP框架,前端用的VueJS框架,需要用到驗證碼,由於都是用的API,所以原有的tp框架驗證碼類採用的session儲存方式無法實現需求,需要進行改寫。記錄一下過程,並分享給大家以供參考。
驗證碼類中主要涉及到兩個方法,一個是生成方法entry,另一個就是驗證方法check。
1、定一個變數
protected $redis;
在__construct方法中加入redis的連線

$this->redis = new \Redis();
$this->redis->connect(C('REDIS_HOST'), C('REDIS_PORT'
)); $this->redis->auth(C('REDIS_AUTH')); //密碼驗證

2、將entry方法中的這行

session($key.$id, $secode);

改寫為redis儲存

$this->redis->setex($key . $code, $this->expire, json_encode($secode));

3、將check方法重寫

 public function check($code, $id = '')
    {
        $a_code = $this->authcode(strtoupper($code
)); $key = $this->authcode($this->seKey) . $a_code; // 驗證碼不能為空 $secode = $this->redis->get($key); $secode = json_decode($secode, true); if (empty($code) || empty($secode)) { return false; } if ($a_code == $secode['verify_code'
]) { $this->reset && $this->redis->delete($key); return true; } return false; }