parseData(); if (!$this->checkSign($session_data)) { return null; } $session_data = json_decode($session_data, true); if (!array_key_exists('sessionid', $session_data)) { return null; } return $session_data['sessionid']; } /** * Prepare session data. * * @param array $data * * @return string */ protected function prepareData(array $data): string { if (array_key_exists('sign', $data)) { unset($data['sign']); } $data['sign'] = CEncryptHelper::sign(json_encode($data)); return base64_encode(json_encode($data)); } /** * Prepare data and check sign. * * @param string $data * * @return boolean */ protected function checkSign(string $data): bool { $data = json_decode($data, true); if (!is_array($data) || !array_key_exists('sign', $data)) { return false; } $session_sign = $data['sign']; unset($data['sign']); $sign = CEncryptHelper::sign(json_encode($data)); return $session_sign && $sign && CEncryptHelper::checkSign($session_sign, $sign); } }