src/AppBundle/Util/UploadToken.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace AppBundle\Util;
use Topxia\Service\Common\ServiceKernel;
use AppBundle\Common\TimeMachine;
class UploadToken
{
public function make($group, $type = 'image', $duration = 18000)
{
$user = $this->getCurrentUser();
$deadline = TimeMachine::time() + $duration;
$secret = $this->getServiceKernel()->getParameter('secret');
$key = "{$user['id']}|{$group}|{$type}|{$deadline}";
$sign = md5("{$key}|{$secret}");
return $this->base64Encode("{$key}|{$sign}");
}
public function parse($token)
{
$token = $this->base64Decode($token);
if (empty($token)) {
return null;
}
list($userId, $group, $type, $deadline, $sign) = explode('|', $token);
if ($deadline < TimeMachine::time()) {
return null;
}
$secret = $this->getServiceKernel()->getParameter('secret');
$expectedSign = md5("{$userId}|{$group}|{$type}|{$deadline}|{$secret}");
if ($sign != $expectedSign) {
return null;
}
return array(
'userId' => $userId,
'group' => $group,
'type' => $type,
);
}
private function base64Encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
private function base64Decode($data)
{
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
private function getCurrentUser()
{
return ServiceKernel::instance()->getCurrentUser();
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。