TP6项目最基本comporser包(未完成)

编辑: admin 分类: 电脑知识 发布时间: 2023-06-14 来源:互联网

本方介绍几个最基础的comporser包(也即是说,这些包在常规项目中大概率都是用得上的,所以一般而言,在一个项目开始初,也就都做了自动安装了)

1. ezyang/htmlpurifier

这个包,主要用来防范XSS攻击的,尤其适合富文本HTML过滤器.
其安装和使用代码主要如下:

  1. 安装 composer require ezyang/htmlpurifier
  2. 使用:
  3. $dirty_html=<<<EOF
  4. <h1>Hello
  5. <script>alert("world");</script> EOF;
  6. $config = \HTMLPurifier_Config::createDefault(); $purifier = new \HTMLPurifier($config);
  7. $clean_html = $purifier->purify($dirty_html); dump($clean_html);
2.phpoffice/phpspreadsheet

这个包是用来处理数据表的,也即数据的导出或导入excel.
其安装和使用代码主要如下:

  1. 安装 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):

  1. namespace personal;
  2. use Firebase\JWT\JWT;
  3. use Firebase\JWT\Key;
  4. class JwtToken{
  5. // 加密
  6. public static function signToken($uid){
  7. $key = 'personal'; // 这里自定义秘钥,需要和解密是保持一致!
  8. $data['uid'] = $uid;
  9. $payload = array(
  10. "iss" => 'personal', //签发者 可以为空
  11. "aud" => 'spospone', //受众,面象的用户,可以为空
  12. "iat" => time(), //签发时间
  13. 'nbf' => time(), // 开始时间
  14. 'exp' => time() + 7*24*60*60, // 到期时间
  15. 'data' => $data // token的数据
  16. );
  17. $jwt = JWT::encode($payload, $key, 'HS256');
  18. return $jwt;
  19. }
  20. // 解密
  21. public static function checkToken($token){
  22. $key = 'personal'; //自定义的一个随机字串用户于加密中常用的 盐 salt
  23. $res['status'] = false;
  24. try {
  25. JWT::$leeway = 60;//当前时间减去60,把时间留点余地
  26. $decoded = JWT::decode($token, new Key($key, 'HS256')); //HS256方式,这里要和签发的时候对应
  27. $arr = (array)$decoded;
  28. $res['status'] = 0;
  29. $res['data'] =(array)$arr['data'];
  30. return $res;
  31. } catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
  32. $res['info'] = "签名不正确";
  33. $res['status'] = 1;
  34. return $res;
  35. }catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
  36. $res['info'] = "token失效";
  37. $res['status'] = 1;
  38. return $res;
  39. }catch(\Firebase\JWT\ExpiredException $e) { // token过期
  40. $res['info'] = "token失效";
  41. $res['status'] = 1;
  42. return $res;
  43. }catch(Exception $e) { //其他错误
  44. $res['info'] = "未知错误";
  45. $res['status'] = 1;
  46. return $res;
  47. }
  48. }
  49. }

先这样子,今天发现了这个实用就先写这一个.