PHP
青崖林夕
脚踏实地,仰望星空!
展开
-
php 上传文件 读取文件单元格内容(excel/csv)
一、PHPExcel 读取csv文件 和 excel文件(.xlsx)https://github.com/PHPOffice/PHPExcel$filePath = 'example.xlsx';$inputFileType = \PHPExcel_IOFactory::identify($filePath);$objReader = \PHPExcel_IOFactory::createReader($inputFileType);$objPHPExcel = $objReader-&g原创 2022-05-26 17:40:18 · 679 阅读 · 1 评论 -
php上传文件出现500错误
问题:能上传小于10k的文件,上传大于10k的文件就会报500错误解决办法:首先查看错误日志,看看报错是什么其次查看client_body_temp的权限问题linux下面输入命令nginx -V 看看自己的client_body_temp在哪个目录下注意nginx运行的用户,目录权限包括父目录权限都要给足;不然就会500错误关于client_body_temp目录的作用,简单说就是如果客户端POST一个比较大的文件,长度超过了nginx缓冲区的大小,需要把这个文件的部分或者全原创 2020-07-15 18:46:58 · 1339 阅读 · 0 评论 -
php.ini修改php上传文件大小限制
打开php.ini,首先找到file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值。默认为2Mpost_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M一般地,设置好上述四个参数后,上传<=8M的文件是不成问原创 2020-07-15 18:46:10 · 692 阅读 · 0 评论 -
PHP实现字符串的排列组合(递归回溯)
题目输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路:回溯的思想:对于排序后的结果位数是一定的,我们先确定第一位,让字符串的第一位分别与第一位和第一位以后的,第二位,第三位…进行交换,得到不同结果,然后对于不同结果再从第二位开始分别与三位,第四位…递归上面步骤;直到字符串最后一位的前一原创 2020-07-15 18:47:20 · 483 阅读 · 0 评论 -
php 简单工厂模式
实例场景:短信发送功能模块。现在我们使用了三个商家的,分别是阿里云、百度SMS、极光的短信服务,在不同业务中可能使用不同的短信发送商,使用简单工厂可以方便的完成这个需求。类图:代码:<?phpinterface Message { public function send(string $msg);}class AliYunMessage implements Message{ public function send(string $msg){ .原创 2020-07-15 18:48:30 · 225 阅读 · 0 评论 -
用PHP写一个同时包含单例模式和工厂模式的简单示例。
<?phpclass Factory{ public static function createInstance() { return DB::getInstance(); }}class DB{ private static $db; private function __construct(){} private function __clone(){} public static function getI.原创 2020-07-15 18:47:53 · 279 阅读 · 0 评论 -
php 单例模式
php 单例模式使用注意事项: 1.使用时不能用反射模式创建单例,否则会实例化一个新的对象 2.使用懒单例模式时注意线程安全问题 3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)<?php/* 1.单例模式只能通过自身进行实例化 2.拥有一个保存对象实例的静态成员变量 3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 ) 4.通过instan...原创 2020-07-15 18:47:40 · 153 阅读 · 0 评论 -
PHP 五种常见的设计模式
策略模式策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。策略模式的三个角色:1.抽象策略角色2.具体策略角色3.环境角色(对抽象策略角色的引用)实现步骤:1.定义抽象角色类(定义好各个实现的共同抽象方法)2.定义具体策略类(具体实现父类的共同方法)3.定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方原创 2020-07-15 18:48:19 · 303 阅读 · 0 评论 -
php 二分查找
PHP实现二分查找法二分查找法需要的数组是一个有序的数组,假设我们的数组是一个递增的数组,首先,我们需要找到数组的中间位置。一、要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比。二、如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置。三、反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间原创 2020-07-15 18:48:07 · 254 阅读 · 0 评论 -
PHP 四种排序方式:冒泡排序/选择排序/快速排序/插入排序
1. 冒泡排序functionbubbleSort($arr){ if(!is_array($arr))returnfalse;$len=count($arr); if($len<=1)return$arr;//控制需要处理冒泡次数for($i=1;$i<$len;$i++){...原创 2020-04-26 13:45:13 · 188 阅读 · 0 评论 -
php 快速排序算法,设置初始值为中间值,进行比对大小,通过递归排序出左边和右边,最后合并数组
说明: 通过设置一个初始中间值,来将需要排序的数组分成3部分,小于中间值的左边,中间值,大于中间值的右边,继续递归用相同的方式来排序左边和右边,最后合并数组示例:<?php$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);function quick_sort($a){ // 判断是否需要运行,因下面已...原创 2020-04-26 13:30:37 · 227 阅读 · 0 评论 -
php curl 发送post请求带参数
public function curl_post($url , $data=array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($...原创 2020-02-13 16:43:35 · 2705 阅读 · 0 评论 -
PHP两种调用接口方式
GET方式:GET比较简单 就不封装了$url="https://text.xiaohuwei.cn/xs/svip.php?key=xiaohuwei";//大麦网数据$file_content = file_get_contents($url);//返回标准的json$arr =(array) json_decode($file_content);//对json格式的字符串进行编码...原创 2020-01-14 19:26:11 · 1791 阅读 · 0 评论 -
PHP获取客户端真实IP地址的方法
php获取客户端IP地址有四种方法,这五种方法分别为REMOTE_ADDR、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、HTTP_VIA。REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返...原创 2019-07-10 16:29:39 · 425 阅读 · 0 评论 -
PHP实现word(office文件)转PDF的功能并添加水印
PHP实现word(office文件)转PDF的功能并添加水印开发目的:用PHP实现在linux服务器上在线批量转换office文件成PDF文件,常应用于文件管理较多的后台管理系统。技术选择:【PHP+OpenOffice+FPDI+FPDF】首先要明确这一点,PHP是可以处理文件,但是PHP并不具备直接将office文件转换为PDF。最终实现这一功能还得借助服务器上的相关软件。例如Mi...原创 2019-06-26 19:47:29 · 6902 阅读 · 0 评论 -
PHP代码实现MySQL读写分离
关于MySQL的读写分离有几种方法:中间件,Mysql驱动层,代码控制关于中间件和Mysql驱动层实现Mysql读写分离的方法,今天暂不做研究,这里主要写一点简单的代码来实现由PHP代码控制MySQL的读写分离。准备工作:两个Mysql服务器,已经配置好主从,如果没配置过Mysql主从,请参考我上一篇博文:《mysql实现主从复制》 主服务器192.168.1.1...转载 2019-05-21 10:48:11 · 645 阅读 · 0 评论 -
Edusoho修改注册的用户密码加密机制规则
一、简介1、修改生成$salt的机制规则。2、修改生成$password的机制规则。二、edusoho的默认用户密码加密机制规则1、系统默认生成$salt的方式:edusoho\src\Biz\User\Register\Impl\BaseRegister.php2、系统默认生成$password的方式:edusoho\vendor\symfony\symfony\...原创 2019-01-04 09:30:55 · 1813 阅读 · 0 评论 -
symfony2 登录验证
注意:如果你需要为存储在某种数据库中的用户做一个登录表单,那么你应该考虑使用FOSUserBundle,这有助于你建立你的User对象,还为您提供了常见的登录、注册、忘记密码的路由和控制器。在此文章中,将构建一个传统的登录表单。当然,当用户登录时,你可以从数据库或者任何地方加载用户。首先,启用防火墙下表单登录# app/config/security.ymlsecurity:...转载 2019-03-29 16:49:44 · 824 阅读 · 0 评论 -
PHP GD库添加freetype拓展的方法
背景:业务需求要用到 imagefttext 函数,发现GD库一开始安装时没有添加 FreeTypelinux版本 centos 6.6安装流程(由于服务器为分布式内网服务器,无法使用yum安装,以下均为下载资源包后的编译安装):下载工具安装包:https://download.savannah.gnu.org/releases/freetype/ (From : https:...原创 2019-04-10 11:20:39 · 5801 阅读 · 0 评论 -
【WEB开发】微信网页授权第三方登录接口(WEB登录)
第一步:获取AppIDAppSecret(不做解释,自己去微信公众平台申请)第二步:生成扫描二维码,获取codehttps://open.weixin.qq.com/connect/qrconnect?appid=AppID&redirect_uri=urlencode(https://www.baidu.com)&response_type=code&sco...转载 2019-05-15 14:34:34 · 5367 阅读 · 0 评论 -
微信网页第三方登录原理
微信开放平台和公众平台的区别1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众平台里面的接口,比如自定义菜单,自动回复,查询功能。目前大多数微信通过认证之后,都在做这个事情。mp.weixin.qq.com2.开放平台面向的开发者和第三方独立软件开发商。我觉得开发平台最大的开放就是微信登录。...转载 2019-05-15 14:37:23 · 352 阅读 · 0 评论 -
php开发新手的一些建议
议题:1>互联网团队的成员组成以及分工和合作。2>如何开始学习php的知识,以及怎么去加深php的功力。3>高性能的选择,使用nginx代替apache。4>使用redis,memacache等nosql去提高网站的并发能力。以及beanstalked消息队列的介绍。5>分布式技术的介绍,什么是map reduce,以及一些流行的大数据框架如hadoop...转载 2019-05-15 17:25:17 · 346 阅读 · 0 评论 -
大型web系统架构详解
动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用...转载 2019-05-15 17:29:45 · 569 阅读 · 0 评论 -
php 关于 $_SERVER['HTTP_USER_AGENT'] 的用法介绍
在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息,显示结果为:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrow...转载 2019-05-15 17:36:46 · 5084 阅读 · 0 评论 -
PHP解析HTTP_USER_AGENT 获取客户端浏览器以及版本号
各大经典浏览器HTTP_USER_AGENT详细IE 各个版本典型的userAgent如下: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2) Mozilla/4.0 (compatible; MSIE 6.0; Windo...转载 2019-05-15 17:39:06 · 5768 阅读 · 0 评论 -
微信公众平台消息接口开发之微信浏览器HTTP_USER_AGENT判断
在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断。一、$_SERVER数组$_SERVER是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些。二、获取HTTP_U...转载 2019-05-15 17:42:25 · 1355 阅读 · 0 评论 -
手机浏览器访问、微信内置浏览器访问和QQ内置浏览器访问区分
/** * 如果是手机浏览器,隐藏微信和QQ登录按钮。微信内置浏览器、QQ内置浏览器允许登录。 * 手机标识:“Mobile”;QQ标识:“QQ/”;微信标识:“MicroMessenger” * 1:隐藏按钮;0:显示按钮 * 备注:微信内置浏览器登录时,程序自动跳过了登录页面(含微信登录按钮的页面),所以,此处不再微信相关的判断。 */public function thridL...原创 2019-05-15 21:20:42 · 1696 阅读 · 0 评论 -
php实现MySQL读写分离
MySQL读写分离有好几种方式 MySQL中间件 MySQL驱动层 代码控制关于 中间件 和 驱动层的方式这里不做深究 暂且简单介绍下 如何通过PHP代码来控制MySQL读写分离我们都知道 “读” 在SQL语句里是 “SELECT”, ”写” 是 “INSERT”那么我们第一时间就应该想到 字符串截取 substr() 这个函数首先我们通过substr()函数来获取到 sql语...转载 2019-05-21 10:44:14 · 466 阅读 · 0 评论 -
php调试利器 -- xdebug
# 痛处一般php项目调试都用echo, var_dump()之类的函数调试,项目大的话很不方便,也很低效; # 预备安装xdebug扩展;官网https://xdebug.org/download.phpwindows找相应的版本下载即可,linux下在 https://xdebug.org/wizard.php这个页面把 php -i 输出结果放里面会告诉你怎么弄,相当...转载 2018-12-27 15:56:26 · 261 阅读 · 0 评论