'HS256', 'typ' => 'JWT', ]; // JWT Payload data // $payload = [ // 'sub' => '1234567890', // 'name' => 'John Doe', // 'admin' => true, // ]; // Create the JWT // $jwt = generateJWT('sha256', $header, $payload, $secret); //var_dump($jwt); // string(149) "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.6pteLozCETeYDL9Dgm-k4INQ1oEsUf0nFy8Tn2OIxgo" // if (strlen($jwtToken)!==0) { // } function verifyJWT(string $algo, string $jwt, string $secret): bool { list($headerEncoded, $payloadEncoded, $signatureEncoded) = explode('.', $jwt); $dataEncoded = "$headerEncoded.$payloadEncoded"; $signature = base64UrlDecode($signatureEncoded); $rawSignature = hash_hmac($algo, $dataEncoded, $secret, true); return hash_equals($rawSignature, $signature); }