File manager - Edit - /home/webapp69.cm.in.th/u69319090030/030 shop/helpers/jwt_helper.php
Back
<?php class JWTHelper { private static function base64UrlEncode($data) { return str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($data)); } private static function base64UrlDecode($data) { $remainder = strlen($data) % 4; if ($remainder) { $padlen = 4 - $remainder; $data .= str_repeat('=', $padlen); } return base64_decode(str_replace(['-', '_'], ['+', '/'], $data)); } /** * Encode payload into JWT */ public static function encode($payload, $secret, $expiry = 86400) { $header = json_encode(['alg' => 'HS256', 'typ' => 'JWT']); $payload['exp'] = time() + $expiry; $payload['iat'] = time(); $base64UrlHeader = self::base64UrlEncode($header); $base64UrlPayload = self::base64UrlEncode(json_encode($payload)); $signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $secret, true); $base64UrlSignature = self::base64UrlEncode($signature); return $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature; } /** * Decode and verify JWT */ public static function decode($token, $secret) { $parts = explode('.', $token); if (count($parts) !== 3) { return false; } list($base64UrlHeader, $base64UrlPayload, $base64UrlSignature) = $parts; $signature = self::base64UrlDecode($base64UrlSignature); $expectedSignature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $secret, true); if (!hash_equals($signature, $expectedSignature)) { return false; } $payloadDecoded = self::base64UrlDecode($base64UrlPayload); $data = json_decode($payloadDecoded, true); if (!$data) { return false; } if (isset($data['exp']) && $data['exp'] < time()) { return false; // Token is expired } return $data; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings