ThinkPHP常用方法

秋夜雨巷 / 2024-03-08 / 原文

对称加密

对称加密可以用来把登录用户的 id 和 name 等少数信息http_build_query成一个字符串加密后放入 cookie 中。

    public function encryptString($content, $key)
    {
        return openssl_encrypt($content, 'AES-128-ECB', $key);
    }

    public function decryptString($content, $key)
    {
        return openssl_decrypt($content, 'AES-128-ECB', $key);
    }

调用

//待加密字符串
$queryString = 'id=1&name=John+Doe&age=22&city=%E5%8D%8E%E7%9B%9B%E9%A1%BF';
//加密
$encStr = openssl_encrypt($queryString, 'AES-128-ECB', 'key123');
echo $encStr . PHP_EOL;
//解密
$deStr = openssl_decrypt($encStr, 'AES-128-ECB', 'key123');
echo $deStr . PHP_EOL;

image

http_build_query & parse_str

http_build_query 将该数组或对象转换成一个经过 URL 编码的查询字符串。
parse_str 将查询字符串转换成数组或对象。

$data = array(
    'name' => 'John Doe',
    'age' => 22,
    'city' => 'New York'
);
//将数组转换为url的查询部分
$queryString = http_build_query($data);
echo $queryString . PHP_EOL;
//将 ur拼接字符串 转换成数组
parse_str($queryString, $res);
print_r($res);

执行后返回
image

Cookie对象

// 在 cookie 中设置 access_token 值
Cookie::set('access_token', $accessToken, Config::get('app.default_logout_time'));
// 从 cookie 中获取accessToken
$accessToken = Cookie::get('access_token');

DB 链式调用

Db 对象链式调用查询数据。

                $list = Db::name('table1')
                    ->alias("a")
                    ->field("a.*,c.col2")
                    ->where($where)
                    ->join("table2 c", "a.col1 = c.id", "left")
                    ->order(["create_time" => "desc"])
                    ->paginate($param["limit"], false, [$param["page"]]);