crypt = Di::getDefault()->get('crypt'); } public function getToken() { $text = implode($this->delimiter, [time(), $this->fixed, Text::random(8)]); return $this->crypt->encryptBase64($text); } public function checkToken($token) { $text = $this->crypt->decryptBase64($token); list($time, $fixed, $random) = explode($this->delimiter, $text); if ($time != intval($time) || $fixed != $this->fixed || strlen($random) != 8) { return false; } if (time() - $time > $this->lifetime) { return false; } return true; } }