分类 教程 下的文章

php -S localhost:8080 即可;如果要指定某个具体目录里的index.phpindex.html,需要加个-t选项,例如,php -S localhost:8080 -t public/

最近对PHP开始进行深入探索,第一次写原生PHP,没有任何框架,纯手动实现一切功能,还是有很多收获的。

首先,composer是个神器,其实composer已经不是原生PHP了, 但对于你想利用namespace这么一个重要的feature,还是非常重要的。

其次,PHPUnit,是每一个PHPer必须掌握的东西。一个能够让别人放心、让自己放心的库或者app,必须写测试。

第三,PHP Session需要了解东西还不少,以前无所谓,只是知道在server端存用户的信息,至于怎么玩的,深入机制不了解。比如,session data其实是存在某处,php.ini这个文件里有配置项;比如session_start()函数要在很多每一页面都开启,才能实现跨页面间session数据的共享,等等吧。

需要继续深入研究,考虑自己写一个库,我对机器人很感兴趣,有考虑自己写一个。

git log --pretty=format:"%cn made a commit %h on %ad - %s" --date=short

如果需要过滤,就可以用pipe符号|,然后后面用grep来匹配字符串。
关于grep,如果要反向匹配,就是说,不含有某个字符,用grep -v

Title: How to verify json web token (jwt) signature by using PHP native functions?

class Jsonwebtoken()
{
   public static function verify(string $token)
    {
        /**应该学习firebase jwt lib,做大量错误处理 */
        $tokenParts = explode('.', $token);
        list($headb64, $bodyb64, $cryptob64) = $tokenParts;

        /** both work */
        $pubKey = openssl_get_publickey('file://'.__DIR__.'/jwtRS256.key.pub');
        // $pubKey = file_get_contents(__DIR__.'/jwtRS256.key.pub');

        $signature = self::urlsafeB64Decode($cryptob64); // from Google Firebase JWT lib

        $isVerified = openssl_verify("$headb64.$bodyb64", $signature, $pubKey, OPENSSL_ALGO_SHA256);

        return $isVerified === 1; // openssl_verify return value is int
    }

    /**
     * Decode a string with URL-safe Base64.
     *
     * @param string $input A Base64 encoded string
     *
     * @return string A decoded string
     */
    public static function urlsafeB64Decode(string $input)
    {
        $remainder = strlen($input) % 4;
        if ($remainder) {
            $padlen = 4 - $remainder;
            $input .= str_repeat('=', $padlen);
        }
        return base64_decode(strtr($input, '-_', '+/'));
    }
}

- 阅读剩余部分 -