
PHP
文章平均质量分 70
millet109
这个作者很懒,什么都没留下…
展开
-
聊聊 Interface
在开发中我们的应用程序应该依赖于抽象(接口)而不是具体的(类)。为什么?我们开发的业务需求随时间和不断扩张而变化,我们的代码也是如此。所以我们的代码必须灵活。代码到接口使我们的代码松散耦合且灵活。示例class Logger { public function log($content) { //输出 Log 日志到文件。 echo "Log to file"; }}一个简单的 Logger 类将日志记录到文件,我们来在控制器中调转载 2022-05-16 18:20:21 · 470 阅读 · 0 评论 -
如何设计一个高性能短链系统?
前言今天,我们来谈谈如何设计一个高性能短链系统短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获。短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计注:里面涉及到不少布隆过滤器,snowflake 等技术,由于转载 2021-07-30 19:55:34 · 1519 阅读 · 0 评论 -
PHP8来了-新特性
文章目录简介新特性1、字符串与数字的比较2、构造器初始化属性3、[注解](https://www.php.net/manual/zh/language.attributes.php)3.1、注解类的声明3.2、注解语法及使用4、命名参数4.1、函数4.2、类参数5、Nullsafe 运算符6、Match 表达式7、联合类型8、即时编译JIT9、类型系统与错误处理的改进10、新的类,接口,函数11、其他语法调整和改进简介PHP 8.0 是 PHP 语言的一个主版本更新。它包含了很多新功能与优化项, 包原创 2021-04-09 11:07:27 · 521 阅读 · 0 评论 -
项目安全简谈
文章目录1.SQL注入漏洞2.XSS漏洞3.CSRF 跨站请求伪造漏洞4.逻辑漏洞前段时间接手了一个老项目的维护,发现了其中一些不规范的写法,有些已经对于整个项目的安全留下了潜在的隐患。今天就来说一下在PHP项目中几个常见的漏洞类型(以下代码演示框架为Laravel7)。1.SQL注入漏洞SQL注入算是一种最早就存在的,并且是非常流行的漏洞之一,危险性也同他的年龄成正比。原理就是:将未经过滤的用户输入拼接到 SQL 语句中。$product = DB::select("select * from原创 2020-10-24 14:57:14 · 555 阅读 · 0 评论 -
PHP开发API离不开签名验证,你是如何设计?
开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。我们在设计签名验证的时候,请注意要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效,过期作废等。唯一性:每次的签名是唯一的。完整性:能够对传入数据进行验证,防止篡改。这里介绍一种方式,是目前国内互联网公司常用的一种方式,其中淘宝的支付宝支付接口、淘宝开放平台接口、腾讯开放平台等应用的一种方式。1.签名参数sign生成的方法第1转载 2020-07-31 16:35:07 · 338 阅读 · 0 评论 -
swoole-做一顿饭来理解协程
协程协程可以简单理解为线程,只不过这个线程是用户态的,不需要操作系统参与,创建销毁和切换的成本非常低,和线程不同的是协程没法利用多核 cpu 的,想利用多核 cpu 需要依赖 Swoole 的多进程模型。—— swoole 协程一章我的理解可以把协程看成一道小学数学的一道题目:“合理安排时间”,来我们先做一道题目:小明下班后回家煮饭,煲汤需要 10 分钟,煮饭需要 8 分钟, 炒菜需要 5 分钟,,请问小明最少需要多少分钟能煮好饭?同步版煮饭public function async()转载 2020-06-11 09:25:49 · 692 阅读 · 0 评论 -
PHP 合并图片,长按图片保存图片到本地
一个小分享,平时 image 相关函数用的比较少,这次刚好用上了,就分享一波。其实这个需求前端做起来会更加的方便,采用:html2canvas 可以实现,不过这一篇主要介绍 PHP 的实现。场景场景是这样的,一个小活动,我们提供的一张图片 a.jpg ,然后需要用户上传一张图片 b.jpg ,最终达到用户长按此图可以进行保存。没用进行合并之前,我们采取的的是将 b.jpg 渲染进 a.jpg ...原创 2018-10-26 17:07:53 · 1516 阅读 · 0 评论 -
ThinkPHP5 在 LNMP 环境下访问出现 HTTP ERROR 500
ThinkPHP5 在 LNMP 环境下访问出现 HTTP ERROR 500这个问题以前遇到过很几次,今天刚好遇到一个朋友又问我来着,解决完了,想着就给记录一下吧,问题不管大小,记录下来 ~~~当然,这个并不是TP5框架问题了,你换一个框架使用LNMP的的命令模式配置或者手动文件配置项目也会出现这种情况,那么为什么会出现呢?以TP5为例:首先出错了,会出现这样一个页面(500…)查错...原创 2018-10-12 17:54:29 · 5511 阅读 · 1 评论 -
PHP中容易遗忘却功能强大的几个过滤器函数
首先,提前祝大家中秋节快乐,阖家团圆~~~找个碎片时间(今天提前放假,美滋滋~~~)更新一篇,主要介绍几个PHP的过滤器函数1.filter_has_var()filter_has_var() 函数检查是否存在指定输入类型的变量。若成功,则返回 true,否则返回 false。<?php if(!filter_has_var(INPUT_GET, "name")) { ...原创 2018-09-21 14:54:37 · 337 阅读 · 0 评论 -
CURL的使用及上传图片
CURL什么是curl,我的理解是curl就是一个模拟数据传输的库。 能让你通过URL和不同的服务器进行交互,支持许多种协议。如:http、https、ftp、gopher、telnet、dict、file和ldap协议。同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名...原创 2018-06-01 17:36:17 · 8698 阅读 · 0 评论 -
php程序关于出现结束符后面有空格等程序异常的问题
今天遇到的一个小问题,纯php代码使用了结束符“?>”,不经意间在后面点了空格,然后导致程序异常。 后来查找后,发现Zend的编码规范中已经有所说明了。 大意是:只含有PHP代码的文件是不允许有 ?> 结束符号的,是为了防止有意外的结尾输出(比如空格,换行),导致程序出现意外响应。后来发现,如果修改php.ini配置文件中的关于压缩或缓存输出的配置项时,这个问题就会解决...原创 2018-05-04 16:51:49 · 713 阅读 · 0 评论 -
PHP命名空间
什么是PHP命名空间PHP手册:从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。命名空间的作用1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的...原创 2018-04-16 16:28:55 · 360 阅读 · 0 评论 -
Laravel 使用PHP_XLSXWriter实现大数据量Excel导出
我在去年写过一篇关于laravel的Excel导出文章:Laravel Excel 实现 Excel/CSV 文件导入导出功能,使用的是Laravel Excel实现的。该扩展包含Excel导入导出功能,功能点是比较完善的,但是有一个地方,当实现大量数据导出到Excel的时候,会发现侠侣很慢,然后如果开启任务管理器查看的时候会发现CPU使用率飙升,内存使用率飙升,功能是没问题,但是总体导出效果不...原创 2019-05-31 16:33:30 · 5473 阅读 · 2 评论 -
解决web高并发概括
所谓高并发,就是同一时间有很多流量(通常指用户)访问程序的接口、页面及其他资源,解决高并发就是当流量峰值到来时保证程序的稳定性。我们一般用QPS(每秒查询数,又叫每秒请求数)来衡量程序的综合性能,数值越高越好,一般需要压测(ab工具)得到数据。假设我们的一个进程(也可以是线程或者协程)处理一次请求花费了50毫秒(业内达标范围一般是20毫秒至60毫秒),那么1秒钟就可以处理20个请求,一台服务器...原创 2018-11-12 14:37:08 · 5364 阅读 · 0 评论 -
PHP 安全问题入门:10 个常见安全问题 + 实例讲解
文章转自:https://learnku.com/php/t/24930相对于其他几种语言来说, PHP 在 web 建站方面有更大的优势,即使是新手,也能很容易搭建一个网站出来。但这种优势也容易带来一些负面影响,因为很多的 PHP 教程没有涉及到安全方面的知识。此帖子分为几部分,每部分会涵盖不同的安全威胁和应对策略。但是,这并不是说你做到这几点以后,就一定能避免你的网站出现任何问题。如果...转载 2019-07-07 11:36:39 · 377 阅读 · 0 评论 -
阿里云 Composer 全量镜像
本篇转自阿里云开发者社区:https://developer.aliyun.com/composer2017-7-12日,阿里云正式上线PHP Composer全量镜像,所有PHP开发者都可以通过阿里云开发者社区developer.aliyun.com/composer加速Composer安装器。这款镜像工具的最大优势是快,几乎实现与PHP Packagist官方实时同步,每隔30秒刷新...原创 2019-07-17 09:02:16 · 1114 阅读 · 0 评论 -
DNS解析、智能DNS原理及CDN应用和原理
DNS域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。简单的来说,就是平时我们访问某一个网站输入的是一个域名,如:www.taobao.com,而不会去输入一个IP来访问淘宝网站,一个比较简单的原因就是,IP我们很难记得住咯。DNS就是将域名转化成IP的一个解析过程,这样...原创 2019-07-21 14:51:20 · 3240 阅读 · 0 评论 -
PHP中Traits详解及如何利用Traits实现代码重用
在正题开始之前,先来聊下PHP面向对象的三大特性:封装:把客观事物封装成抽象的类,且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承:让某个类型的对象获得另一个类型的对象的属性的方法,它支持按级分类的概念。多态:一个类实例的相同方法在不同情形有不同表现形式。我们说一下继承这个问题,PHP是一门单继承的语言,不支持多继承,一次只能继承一个类。但是上有政策,下有...原创 2019-09-18 16:18:45 · 1319 阅读 · 0 评论 -
使用 PHP Insights 在终端查看 PHP 项目代码质量
PHP Insights 是一个由 Nuno Maduro 发布的、可在控制台进行 PHP 即时质量检查的拓展包。在项目的 readme 文件中,可以发现 PHP Insights 的主要功能包含:代码质量 与 代码风格 分析一个针对于代码 结构 和 复杂度 的漂亮的预览界面在 Laravel、Symfony 中可开箱即用的设计,当然,还支持更多框架包含的内建的检查项使代码更可靠...转载 2019-09-29 18:11:13 · 326 阅读 · 0 评论 -
Ajax提交form表单,Ajax文件上传
平时我们会用到各种各样的Ajax请求数据方式,下面我们就来说一下这个Ajax的表单提交,文件上传等等。。。1.第一种,.post,.get方式$.post(path,{data:data},function(data){ if(success){ }else{ }},"json");2.第二种传统的Ajax方式(给一个简单的例子)$.ajax(原创 2017-05-15 16:40:45 · 3238 阅读 · 0 评论 -
应用服务器集群的session管理-多台服务器共享session问题
应用服务器集群的session管理:这是我在一本网站技术架构分析的书上看到的。这一章主要写在高可用架构设计之下服务无状态这一特性下怎么管理会话(session)。以下是几例解决方案(示例图为转载图片):1.session复制session复制是早期企业应用系统使用比较多的一种服务器集群Session管理机制。应用服务器开启Web容器的的Session复制功能,在集群中的几台服务器之间同...原创 2018-04-09 19:52:19 · 7085 阅读 · 5 评论 -
通信协议:HTTP HTTPS TCP/IP UDP
TCP/IP HTTP UDP:都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。 http:是用于www浏览的一个协议。 tcp:是机器之间建立连接用的到的一个协议。1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TC...原创 2018-03-08 20:25:38 · 1234 阅读 · 0 评论 -
Composer详细使用及利用Composer在Github和Packagist库中发布项目
使用composer在Github上发布项目 gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。 作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。 所以,我们很有必要知道如何使用composer在gi...原创 2018-02-08 09:42:06 · 3068 阅读 · 0 评论 -
PHP实现接口多继承
在PHP的面向对象中,接口可以继承接口。PHP类只能继承一个父类(单继承),但是接口可以实现多继承,可以继承一个或者多个接口。当然接口的继承也是和类的继承一样使用extends关键字,要多个继承的话只要用逗号把继承的接口隔开即可。需要注意的是当你接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法,所以类实现接口时必须实现所有相关的抽象方法。下面举例说明:1.继承单接口原创 2017-06-13 16:53:47 · 6070 阅读 · 0 评论 -
PHP中rand()的使用
前段时间,有一个地方用到了随机数。然后在使用rand的时候出现了一点失误。最后使用getrandmax()搞定。rand():产生一个随机整数。如果没有提供可选参数 min 和 max,rand() 返回 0 到 getrandmax() 之间的伪随机整数。例如:rand(1,10);就是产生1-10之间的整数,包括1和10.但是有一点。当你的rand函数的第二个参原创 2017-07-13 14:49:42 · 4239 阅读 · 0 评论 -
Thinkphp自定义分页(二)
上次写过一个thinkphp自定义分页,样式上不是太美观,配置上比较简单。这次分享一个修改过后的。当然,第一次的自定义分页也是没有问题的。以下代码可直接粘贴复制使用:1.框架底层的page1.class.PHP 路径( Engine\Library\Think),你可以复制一份原来的的page.class.php重命名然后进行使用,如:page1.class.php<?phpn原创 2017-07-12 11:38:54 · 437 阅读 · 0 评论 -
《改变未来的九大算法》(美)约翰·麦考密克
前段时间,哥哥给我分享了一本书。就是这个《改变未来的九大算法》(美)约翰·麦考密克,本着共享的精神(嘿嘿~~),在这里和大家分享一下。其实感觉书中讲的最多的并不是算法,而是一种思想,看起来挺不错的,我也只看了一丢丢,一起看!改变未来的九大算法(美)约翰·麦考密克(点击下载=》密码:ukc6)原创 2017-06-06 16:09:57 · 2008 阅读 · 1 评论 -
解决验证码不显示问题
几乎所有登陆都会使用到的一个东西---验证码。不过很多时候会出现验证码不显示的问题,下面就我做自己以前遇到过的一些小问题来简单写一下。1.最基本的一个,查看配置中GD库有没有打开。(PHP中可以使用phpinfo();直接查看各项信息),如果找不到该项信息表示没有打开,需要在php.ini中进行打开。记得修改完配置信息一定要进行重启操作。原创 2017-05-13 12:09:48 · 13832 阅读 · 0 评论 -
会话控制(基于Coookie,session和Url)
1 什么是会话控制 出现原因:http是无状态协议的,每次都是不同的服务器请求,无法维护两个请求事务之间的关系. 会话控制:能够在网站中跟踪一个变量,通过对变量的跟踪,就可以使多个请求事物之间建立联系,根据授权和用户身份显示不同的内容,不同页面 cookie:是服务器设置在客户端的文本文件,保存客户端得个人信息.2 会话跟踪技术 1 隐藏表单域 2 url原创 2017-04-17 11:45:50 · 1143 阅读 · 0 评论 -
去除BOM头问题
有段时间经常因为BOM头的问题导致程序出错,不算致命性错误,就是在页面顶部出现留白。接下来说一下我的解决方法。1.第一个非常有用的方法就是哪个页面出先BOM头问题了,找到跳转到这个页面的控制器中的方法,在这个方法最前面加上ob_end_clean().原理:ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲。这个BOM头相当于即时输出一些东西。你在要输出模板之前ob_end_c原创 2017-04-18 09:15:12 · 3398 阅读 · 0 评论 -
七牛云转码微信录音永久存储本地
在上一篇《微信开发-关于分享朋友&朋友圈以及录音功能》文章中,介绍了如何使用微信录音功能,并将微信服务器的临时录音文件下载到本地存储。其中有一个步骤提到过,如果有相关需求可以将资源上传到七牛云进行转码处理。原因是:微信只会帮我们存储这些音频文件3天,降入我们过了一段时间想找出当初录制的语音就尴尬了,另外iphone手机不支持.amr格式的音频文件播放,安卓是可以得。(亲测过),所以需要进行转码原创 2017-06-27 17:03:38 · 2086 阅读 · 0 评论 -
PHP发送邮件
我们知道发送邮件需要搭建一个邮件服务器,但是如果量不大的时候。搭建这个又比较劳民伤财,所以,接下来分享另一种邮箱发送方法。PHPEmailer:PHPMailer是一个用于发送电子邮件的PHP函数包。(点击下载)介绍:*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable原创 2017-06-14 16:19:38 · 787 阅读 · 2 评论 -
PHP导出数据表数据生成Excel表格文件
有些时候我们会遇到将数据库的数据导出生成Excel表格,比如名单表等等。。。接下来 我提供两种使用PHP将数据表信息导出生成Excel表格的方法,其中第一种为自己使用的,在Thinkphp下。第二种为使用比较多的PHPExcel,网上看到的,经测试完全没问题。1.直接自己进行代码拼接生成表格<?php//导出excel public function excel(){原创 2017-07-21 17:12:41 · 2012 阅读 · 3 评论 -
客户端禁用Cookie后如何使用Session
Cookie和SessionSession即会话,是指一种持续性的,双向性的连接。Session和Cookie在本质上没什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器之间的保持会话连接状态的机制。 HTTP协议本身并不能支持服务器端并保存客户端的状态信息,所以这个时候就用到了Session。 Session通过一个成为PHPSESSID的Cookie和服务器联系。Se...原创 2018-03-07 12:57:54 · 3048 阅读 · 2 评论 -
Composer的使用
composer的使用本篇文章,主要讲一下怎么简单的使用composer。怎么使用composer.json文件加载项目需要依赖的包。怎么快速的安装类库。 我不会直接说框架中怎么使用,我们先来自己创建一个测试项目,来看一下composer是怎么工作的。利用composer自动加载依赖包1.首先你在你的环境根目录创建一个项目,比如文件夹名字叫做:ComposerTest2.创建一原创 2018-02-06 10:01:42 · 544 阅读 · 0 评论 -
Composer的安装
composer先来大概介绍一下composer Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。 说的简单一点,Composer 是一个新的安装包管理工具,服务于 PHP 生态系统。它实际上包含了两个部分:Composer 和 Packagist。原创 2018-02-05 10:40:25 · 953 阅读 · 0 评论 -
25个不错PHP的游戏编程脚本代码分享
本文介绍了25个不错PHP的游戏编程脚本代码,包括简单的掷骰器、随机名称生成器、场景生成器、牌组创建器(Deck builder)和装备(shuffler)、简单的扑克发牌器、Hangman游戏、纵横字谜助手、米德里比斯、乐透机等。希望能够对你的工作有所帮助。简单的掷骰器许多游戏和游戏系统都需要骰子。让我们先从简单的部分入手:掷一个六面骰子。实际上,滚动一个六面骰子就是从 1转载 2017-04-13 17:57:07 · 8901 阅读 · 0 评论 -
将base64数据流文件转换为图片文件
前后端交互处理图片的时候,会出现这样的情况: 前端传递给我们后端的是base64的图片数据流,我们需要做的就是将它转为图片并且保存起来,根据需要再决定是否将图片存储路径信息返回给前端。下面就来说一下这个怎么处理,其实很简单,就是一个转码存储的过程。1.假设现在前端将数据流传过来了(这个地方你可以自己用在线工具将本地的某张图片转码为base64格式然后拿来测试)2.我们接收到之后需要进原创 2018-01-13 11:32:05 · 11516 阅读 · 0 评论 -
Laravel+Blob多图上传
一.介绍我们知道多图上传一般都附带的又即时显示功能,即上传后可以立刻看到所传图片。之前一直用的一个多图上传插件是选择图片,点击上传然后图片资源上传到服务器,然后返回存储的路径信息,最后我们点击表单的提交按钮后将这些信息插入数据库。现在有一个尴尬的地方,当我点击上传图片后,我又取消这次表单提交了。可是图片资源已经到服务器了,容易造成空间浪费等。现在提供一个自己结合Laravel框架写的多原创 2017-09-13 14:07:04 · 2513 阅读 · 0 评论 -
PHP-正则表达式随笔
正则表达式 正则用来查找指定的字符串、匹配、替换指定的字符串 1、什么是正则表达式 正则表达式是一组描述字符串特征的模式,用于匹配一组字符串。 这种模式本身也是字符串只不过有一些规则和语法。 2、正则表达式用来解决字符串的搜索、替换、分隔 3、在PHP中学习正则表达式学习什么?原创 2017-02-09 16:24:30 · 638 阅读 · 0 评论