本方介绍几个最基础的comporser包(也即是说,这些包在常规项目中大概率都是用得上的,所以一般而言,在一个项目开始初,也就都做了自动安装了)
1. ezyang/htmlpurifier
这个包,主要用来防范XSS攻击的,尤其适合富文本HTML过滤器.
其安装和使用代码主要如下:
安装 composer require ezyang/htmlpurifier
使用:
$dirty_html=<<<EOF
<h1>Hello
<script>alert("world");</script> EOF;
$config = \HTMLPurifier_Config::createDefault(); $purifier = new \HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html); dump($clean_html);
2.phpoffice/phpspreadsheet
这个包是用来处理数据表的,也即数据的导出或导入excel.
其安装和使用代码主要如下:
安装 composer require phpoffice/phpspreadsheet
使用详见:https://blog.csdn.net/u011167662/article/details/101671828
3.firebase JwtToken
这个包主要用来创建token的
安装为:composer require firebase/php-jwt
使用时,需要先引入这个类来创建一个新类,一般会在项目的extend目录下新建一个”personal”的个人类文件夹,在其下创建一个JwtToken.php的类文件,在此类中对外提供两个方法:signToken($uid)和checkToken($token):
namespace personal;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
class JwtToken{
// 加密
public static function signToken($uid){
$key = 'personal'; // 这里自定义秘钥,需要和解密是保持一致!
$data['uid'] = $uid;
$payload = array(
"iss" => 'personal', //签发者 可以为空
"aud" => 'spospone', //受众,面象的用户,可以为空
"iat" => time(), //签发时间
'nbf' => time(), // 开始时间
'exp' => time() + 7*24*60*60, // 到期时间
'data' => $data // token的数据
);
$jwt = JWT::encode($payload, $key, 'HS256');
return $jwt;
}
// 解密
public static function checkToken($token){
$key = 'personal'; //自定义的一个随机字串用户于加密中常用的 盐 salt
$res['status'] = false;
try {
JWT::$leeway = 60;//当前时间减去60,把时间留点余地
$decoded = JWT::decode($token, new Key($key, 'HS256')); //HS256方式,这里要和签发的时候对应
$arr = (array)$decoded;
$res['status'] = 0;
$res['data'] =(array)$arr['data'];
return $res;
} catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
$res['info'] = "签名不正确";
$res['status'] = 1;
return $res;
}catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
$res['info'] = "token失效";
$res['status'] = 1;
return $res;
}catch(\Firebase\JWT\ExpiredException $e) { // token过期
$res['info'] = "token失效";
$res['status'] = 1;
return $res;
}catch(Exception $e) { //其他错误
$res['info'] = "未知错误";
$res['status'] = 1;
return $res;
}
}
}
先这样子,今天发现了这个实用就先写这一个.