有什么用 在保证图片质量的前提下,批量压缩整个网站目录下所有图片的大小。...提取码8888,脚本默认是扫描所在目录和所在目录的子目录下的所有图片文件进行压缩。...编辑compress.php,找到下面两行代码。.../*设置key*/ setKey("43Cg8kQDDVDn9lLdJcpM"); /*压缩的文件格式*/ $arr=["jpg","png"]; 将获取到的apikey填入第一行,第二行是指定需要压缩的图片的格式...cd /脚本所在目录 php compress.php 等待即可。 运行
有时候经常会用到一些在线手册,比如国内或国外的,有些是访问速度慢,有些是作者直接吧网站关闭了,有些是服务器总是宕机,所以还是全盘克隆到自己服务器比较爽。所 已这里给了一个demo php class Controller_Spider extends MyYaf_Controller_Base{ function init(){ parent::init();...'; include 'CurlMulti/MyCurl.php'; include 'phpQuery.php'; } } <?...$curl, $url, $dir ); $clone->overwrite = true; $clone->start (); return false; } } 对应包含的文件我已经上传上去了...http://download.csdn.net/detail/tiaozhanji_xian/8951277,免积分的
✨ 什么是 DI / 依赖注入 依赖注入DI 其实本质上是指对类的依赖通过构造器完成 自动注入 通俗来说,就是你当前操作一个类,但是这个类的某些方法或者功能不是单单只靠这个类就能完成的,而是要 借助另一个类...严格来说,你想在一个类中操作另一个类,这两个类之间形成了相互依赖关系,传参的方式叫 注入 ✨ 依赖注入出现的原因 在未使用依赖注入的时候,php 需要在一个类中使用另一个类的时候,往往都会进行如下操作...= new adapter(); } } ✨ 简单的依赖注入 上面的代码耦合度太高,导致了 依赖注入 的出现,主要是为了 解耦合 如下案例,我们只需要将所需要操作的类对象传入即可 依赖注入 操作的参数是...对象,而不是普通参数,是不是有更好的理解了 但是这样的简单依赖注入,会造成如果你依赖的类很多,你传参的时候会很长,容易混乱 的对象注入容器中 这样会导致,所有的对象还没有被使用就会被实例化一遍,造成 资源的损耗 我们可以 传入闭包,这样对象就不会被实例化而注入,当你自己需要使用的时候,
菜鸟今天刚刚学习PHP和SQL方面的内容,感觉坑比较深,做一下简单的记录,欢迎批评交流。 主要有两种思路一种是过滤,一种是使用占位符,据说第二种可以根本解决SQL注入,本人涉猎不深,还有待研究。...下面是过滤思路的示例代码,需要注意以下几点: 1.判断数据类型加引号,防止被识别为数字。...2.使用stripslashes()转义/等 3.用real_escape_string()过滤'等(使用前要注意设置字符集) 4.最后加上了HTML编码的函数htmlentities(),防止XSS。...此外还要注意设置表、列的名字不被人猜到,访问控制,防止二次注入,设置白名单过滤作为选项的输入等。 网上还有很多其他资料,这里只是简单记录一个纲要,欢迎补充要注意的纲要点。
今天整理电脑文件时,看到了以前收藏的生成 sitemap.xml 的 php 脚本,就随手打开看了看,发现这个代码只能生成主页和文章页的 sitemap。...其实,张戈博客早就已经实现 sitemap.xml 静态化了,而且在后面的文章中也有提到=>【相关文章】 实现方法有多种,比如在 Nginx 的 fastcgi 缓存中取消 xml 文件的缓存屏蔽,或者使用张戈博客最早使用的...在这里,我就分享一个自己一直在用的最简单的实现方法:Linux 定时任务+wget 定时生成 sitemap.xml 具体实现:将 sitemap.php 放到某个不为人知的目录,然后定时使用 wget...如果实在搞不清楚什么是相对路径,那么就用简单粗暴的方法:将网站根目录的 sitemap.php 重命名为一个只有自己知道的 php 文件,比如 xml.php,然后如下添加任务: #每天在网站根目录生成一个...③、今天,把分类、单页面及标签的 sitemap 都整出来了,那开放适配专用 sitemap 的 php 代码也就可以继续完善下了,回头有时间我会整理总结一篇关于 sitemap 及开放适配的终结篇,敬请期待
知道 PHP 是什么、如何工作或者为什么如此热门,但现在该是进一步了解 PHP 的时候了。因此本文简要介绍了关于 PHP 基础的基本概念。php的介绍及Php有什么优势?...PHP 是一种HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。...PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。php的介绍及Php有什么优势?...PHP 是作为一个小开放源码,随着越来越多的人意识到它的实用性从而逐渐发展起来。Rasmus Lerdorf 在 1994 年发布了 PHP 的第一个版本。...它支持许多流行的数据库,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。 Php有什么优势?
最新帮朋友做个企业站,说白了就是个简单的CMS。 纯展示类的。这种东西技术含量低,千万不要自己从头开发,只要找个现成的cms,改改模板就可以了。时间就是金钱,会改就可以。...我知道有dede,帝国的存在,不过没用过,感觉也挺麻烦了。如果有简单的就更好了。 之前我也做过一个纯展示类的,是基于 DouPHP,不过最高只支持PHP5.2。...我的服务器装的PHP7.1和 PHP7.2。我选择不妥协。 于是乎,又去找了其他的cms,经过对比,最终选择了蝉知,说实话这个名字起的一般,很容易打出产值。...用了一阵发现有几个好处: 开源,github上有源码 定制化比较高,特别是后台有个可视化功能很好用 ? image.png 而且还可以为页面添加自定义css和js。...image.png 编辑移动版header的地址是 /system/tmp/template/mobile/block/header.html.php 比如想改logo,这里有个小bug
更有甚者,有可能通过 SQL 查询去运行主机操作系统级的命令。...直接 SQL 命令注入就是攻击者常用的一种创建或修改已有 SQL 语句的技术,从而达到取得隐藏数据,或覆盖关键的值,甚至执行数据库主机操作系统命令的目的。...由于在缺乏对输入的数据进行验证,并且使用了超级用户或其它有权创建新用户的数据库帐号来连接,攻击者可以在数据库中新建一个超级用户。 下面分享一个用于防注入的PHP类: php /** * Params Tools * @author JasonWei * @version v2 */ class Params { public $get = array...SQL注入的字符 * * @param string $string * @return bool */ public function checkInject
在PHP 开发中,依赖注入(Dependency Injection,简称 DI)和控制反转(Inversion of Control,简称 IoC)是两个重要的设计原则和编程技术。...PHP 中实现依赖注入的方式构造函数注入 在对象的构造函数中接收依赖对象作为参数。...常见的 PHP 控制反转容器 是 Pimple和Symfony DI Pimple特点简单性:Pimple 的 API 非常简单,容易上手。灵活性:可以轻松地定义和解析服务。.../ 获取服务$userRepository = $container->get(UserRepository::class);Pimple 更适合初学者和小型项目,而 Symfony DI 容器更适合有经验的开发者和大项目...总之,深入理解和熟练运用 PHP 中的依赖注入与控制反转技术,可以显著提高代码质量,增强系统的灵活性和可扩展性,使开发更加高效和可靠。
SQL注入是一种攻击技术,攻击者试图通过在输入中注入恶意的SQL代码来干扰应用程序的数据库查询。为了防止SQL注入,你需要了解可能用于注入的一些常见字符和技术。...以下是一些常见的SQL注入字符和技术: 单引号 ': 攻击者可能会尝试通过输入 ' 来结束 SQL 查询语句中的字符串,然后添加自己的恶意代码。...为了防止SQL注入,强烈建议使用参数化查询或预处理语句,以确保用户输入的值不会直接拼接到SQL语句中。这样可以有效地防止注入攻击。...此外,进行输入验证和过滤,只允许合法的字符输入,是增加应用程序安全性的另一种重要措施。...---> {}", xssArr[i]); log.error("请注意,值可能存在SQL注入风险!
每天抽一点时间来看看 PHP 源码方面的书,说实话,无法在调试器下观察 PHP 运行状态的上下文实在是一件痛苦的事情。...不过还好不是一无所获,虽然内容比较多,但是掌握方法挨着看下去还是可以看一些代码的。而且本身 PHP 源码讲解就有书,所以学习起来还是较为方便的。...想要调试源码,我觉得我最好应该找一个前一天充分休息并且是阳光明媚的早上来学习关于调试 PHP 源码的知识,那样可能效率会高一些,但是这样的机会好像又不多。...其实对应到阅读 PHP 的源码也是类似的吧。 说说我学习 PHP 源码的方法吧。虽然有讲解 PHP 源码方面的书,但是书中的内容在做一些基本的介绍后就开始讲源码了。...当代码操作具体数据结构中的字段时,再把具体的字段补充到对应的数据结构中,这样不但 PHP 源码底层的处理逻辑了解了,而且对于底层的数据结构也就有了清晰和全面的掌握了。
安装 composer require php-di/php-di 基本用法 1.使用依赖注入 首先,让我们使用依赖注入来编写代码,而不考虑PHP-DI: class Mailer { public...它怎么知道要注入什么?容器使用一种称为自动装配的技术。这不是PHP-DI独有的,但这仍然很棒。它将扫描代码并查看构造函数中需要哪些参数。...webman 框架应用 在webman里依赖自动注入是可选功能,此功能默认关闭。如果你需要依赖自动注入,推荐使用php-di,以下是webman结合php-di的用法。...如果你不想使用 php-di ,可以在这里创建并返回一个其它符合PSR-11规范的容器实例。 构造函数注入 新建app/service/Mailer.php(如目录不存在请自行创建)内容如下: php-di创建的实例才能完成依赖自动注入,手动new的实例无法完成依赖自动注入,如需注入,需要使用support\Container接口替换new语句,例如: use app\service
在上一期中我们大概得学习了SpringBoot获取Bean的逻辑。其实对于开发来说,明白这些感觉已经足够了。但是在上期我们没有指出类似@Autowired等注解是如何注入到bean中的。...因为在对getBean方法分析的时候,我们发现applyMergedBeanDefinitionPostProcessors方法里边有很多处理器,通过查看发现有很多眼熟的方法大概就是处理哪些类内注解的。...mbd.isSynthetic() && this.hasInstantiationAwareBeanPostProcessors()) {//获取注入解析的后置处理器 Iterator...看到这里就是循环遍历找到属性之后就进行注入的。那么我们看看element.inject做了哪些事情。 ?...总结:@Autowired不能被static进行修饰,其次注入的原理是Spring直接修改了属性的修饰符号然后直接设置值,让其与public属性一样。所以可以不用写set、get方法。
1 getBean触发的依赖注入 BeanFactory,最原始的 IoC 容器,有如下方法 getBean 判断是否有 Bean,containsBean 判断是否单例 isSingleton BeanFactory...如果我们想知道一个工厂具体产生对象的过程,则要看这个接口的实现类。 在基本的容器接口 BeanFactory 中,有一个 getBean接口,该接口的实现就是触发依赖注入发生的地方。...处理对各种Bean对象的属性进行处理的过程(即依赖关系处理的过程) createBeanInstance 源码解析 protected BeanWrapper createBeanInstance(...Array的注入、对List等集合类以及对非集合类的域进行注入 经过一系列的注入,这样就完成了对各种Bean属性的依赖注入过程 在Bean的创建和对象依赖注入的过程中,需要依据BeanDefinition...在对Bean的属性进行依赖注入时,解析也是一个递归的过程 根据依赖关系,层层完成Bean的创建和注入,直到最后完成当前Bean的创建 有了这个顶层Bean的创建和对它属性依赖注入的完成,意味着和当前
示例 构造器注入类,分别有三个构造器,一个是无参构造器,一个是注入一个Bean的构造器,一个是注入两个Bean的构造器: public class ConstructorAutowiredTest {...@Autowired注解依赖注入 determineConstructorsFromBeanPostProcessors方法将选择是否有适合的自动注入构造器,如果没有,将使用无参构造器实例化 在没有@Autowired...在构造器数量有两个的时候,并且存在无参构造器,将defaultConstructor(第一条的无参构造器)放入candidateConstructors集合中。...2、为什么注释掉两个构造器,留下一个有参构造器,并且没有@Autowired注解,Spring将会使用构造器注入Bean的方式初始化Bean?...答:参照有注解的处理方式: 当打了两个@Autowired注解,也就是两个required都为true,将会抛出异常,若是一个为true,一个为false,也将会抛出异常,无论顺序,因为有两层的判断,一个是
Java的依赖注入(Dependency Injection,简称DI)是一种设计模式,旨在减少类之间的耦合性,通过外部管理对象之间的依赖关系。...常见的Java依赖注入框架包括: Spring Framework:Spring是最流行的Java开发框架之一,提供了强大的依赖注入功能。...它支持多种依赖注入方式,包括构造函数注入、属性注入和方法注入。 Google Guice:Guice是一个轻量级的依赖注入框架,由Google开发。...它采用了基于注解的依赖注入方式,通过注解标记需要注入的依赖关系。 Apache Struts:Struts是一个基于MVC模式的Web应用开发框架,也支持依赖注入。...它通过注解和代码生成来进行依赖注入,避免了运行时的性能损失。 这些框架都提供了不同的依赖注入方式和特性,可以根据项目需求和个人偏好来选择合适的框架。
ctf入门训练正在进行SQL注入的学习和训练。很多同学反映网上找不到可以练手的站点做测试,sql注入这样经典的漏洞,网站改补早就补上了。...其实通过google 我们可以找到大把的有漏洞的、几乎无人管理的网站。 利用google的“inurl:” 语法,搜索有特征的url,很容易找到有漏洞的站点的。...比如: 我这里准备了一个搜索字典: 大概有上百个可搜索的特征url,足够大家使用了。结合教程进行训练。...完整的搜索字典请查看:https://github.com/xuanhun/HackingResource/blob/master/web%E5%AE%89%E5%85%A8/google%20hack...%20%E4%B9%8Bsql%E6%B3%A8%E5%85%A5.md google hack 是搜集信息的重要工具之一,可以参考我之前的文章 google hack 之 查询语法 扩展学习。
当Spring中存在一个接口(或抽象类)有多个实现类时,我们可以使用@Qualifier注解来指定要注入的实现类。...本文将介绍在这种情况下如何正确注入Service的多个实现类,以下是相关内容的整理: 摘要 本文将探讨在Spring应用中,当一个Service接口有多个实现类时,如何通过使用@Qualifier注解来正确地注入所需的实现类...通过正确注入所需的实现类,我们可以实现更好的代码组织和可维护性。 配置方法 使用@Qualifier注解是解决这个问题的主要方法。它允许我们在需要注入的地方指定要使用的具体实现类。...要确保注入点的类型与要注入的实现类相匹配。 如果没有使用@Qualifier,Spring可能会在多个实现类中选择一个默认的,这可能不是我们期望的结果。...总结 在Spring应用中,当一个Service接口有多个实现类时,使用@Qualifier注解可以帮助我们明确地注入所需的实现类,从而更好地管理不同业务逻辑的组件。
根据不同情况编译不同代码、产生不同目标文件的机制,称为条件编译 有这些预处理命令:#if、#elif、#else #endif ;#ifdef #else #endif PHP源码: #ifdef SERIALIZE_HEADERS