// Created on savesnippets.com ยท https://savesnippets.com/gUMJQgvkIQQlxq rtrim(strtr(base64_encode($s), '+/', '-_'), '='); $now = time(); $claims = array_merge(['iat' => $now, 'exp' => $now + $ttlSec], $claims); $header = $b64(json_encode(['alg' => 'HS256', 'typ' => 'JWT'])); $payload = $b64(json_encode($claims, JSON_UNESCAPED_SLASHES)); $signing = "$header.$payload"; $sig = $b64(hash_hmac('sha256', $signing, $secret, true)); return "$signing.$sig"; } $token = jwtSign(['sub' => 42, 'role' => 'admin'], getenv('JWT_SECRET')); echo $token;