php
IT阿剂
万物皆有裂缝,因为那是光照进来的地方。
展开
-
Liunx使用yum安装PHP7.2
1、安装yum源2、安装php3、启动php。原创 2023-03-17 18:23:01 · 376 阅读 · 0 评论 -
PHP使用fpdf+fpdi解决中文乱码
pdf 中文乱码 php fpdf fpdi原创 2023-02-28 16:31:01 · 1680 阅读 · 0 评论 -
PHP+Redis 实现分布式锁
redis+PHP 实现分布式锁 setnx原创 2022-12-22 18:07:42 · 333 阅读 · 0 评论 -
TP5使用find_in_set()
在实际开发中我们有时会将例如1,2,3,4之类的id或者其他组成的数值字符串存入字段中,然后会有查询的需求,例如我们需要查询包含1的所有的数据,这时我们可以使用find_in_set()函数;在TP框架中没有直接封装关于find_in_ser()的方法,我们可以使用exp去使用;$id=4;Db::name('menu')->where('FIND_IN_SET(:id,pid_all)',['id' => $id])->select(); $map[]=['exp','F原创 2022-01-24 11:03:35 · 4153 阅读 · 0 评论 -
TP5的whereOr方法完成账号密码登录(手机号或用户名)功能
登录功能中一般会有账号密码登录和手机号验证码登录;账号密码登录时有的会显示使用手机号或者用户名登录。这样在输入用户名或者手机号+密码时,后台就需要去查询账号和密码是否匹配;原生sql没什么难度;这里主要是记录下TP5(及以上版本)框架下的whereOr方法去实现,这样写法不会向原生sql那么繁琐。直接先上代码//这里有几个点需要注意下//1.function()后面使用use()传入条件参数//注意闭包查询里面的顺序,而且第一个查询方法用where或者whereOr是没有区别的。db('原创 2022-01-24 10:50:34 · 1285 阅读 · 0 评论 -
微信公众号开发之上传临时素材
公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。使用接口过程中有任何问题,可以前往微信开放社区#公众号专区发帖交流注意点:1、临时素材media_id是可复用的。2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。3、上传临时素材的格式、大小限制与公众平台官网一..原创 2021-10-12 18:55:57 · 1464 阅读 · 0 评论 -
微信公众号开发之自定义菜单
在微信公众号开发中如果我们启用服务器配置那么我们再公众号后台设置的自定义菜单就会失效(如下图所示)所以我们就需要通过接口来自定义菜单,多的不说先上一段代码//创建菜单 function createMenu(){ $appid = $this->appID; $secret = $this->appsecret; $access_token = $this->getToken($appid,$secret); $url = "https://ap..原创 2021-10-12 12:02:36 · 2556 阅读 · 0 评论 -
微信公众号开发之获取Access token
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。公众平台的API调用所需的access_token的使用及生成方式说明:1、建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的access_token均来原创 2021-10-12 10:59:30 · 1173 阅读 · 0 评论 -
PHP 将json格式数据转换成数组的方法
php将json数据转换为数组的方法非常简单,php自带的json_decode()就可以实现,但是记住参数后面加上true,返回的便是数组,如果不加返回的便是对象//json格式数据$data = '{"angle":0,"card_region":[{"x":292,"y":1619},{"x":2705,"y":1809},{"x":2584,"y":3457},{"x":87,"y":3159}],"config_str":"{\"side\":\"back\"}","end_date"原创 2021-09-17 17:22:56 · 3786 阅读 · 0 评论 -
数字转换为中文大写(钱数)
这几天有个需求需要把数字转换为大写的钱数public function toChineseNumber($money){ $money = round($money,2); $cnynums = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); $cnyunits = array("圆","角","分"); $cnygrees = array("拾","佰","仟","万","拾","佰","...原创 2021-08-30 17:28:21 · 399 阅读 · 0 评论 -
数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max_allowed_packet=524288000;修改 #512M 2.修改my.cnf,需重启mysql。 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以): max_allowed_packet=10M...原创 2021-08-02 18:13:40 · 265 阅读 · 0 评论 -
PHP判断文件夹是否存在不存在创建
function mkdirs($dir, $mode = 0777){ if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE; if (!mkdirs(dirname($dir), $mode)) return FALSE; return @mkdir($dir, $mode); }原创 2021-05-21 19:08:43 · 194 阅读 · 0 评论 -
PHP使用array_unique对二维数组去重处理
array_unique() 函数移除数组中的重复的值,并返回结果数组。当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。返回的数组中键名不变。PS:被保留的数组将保持第一个数组项的键名类型。参数 描述 array 必需。规定数组。 sortingtype 可选。规定如何比较数组元素/项目。可能的值: SORT_STRING - 默认。把项目作为字符串来比较。 SORT_REGULAR - 把每一项按常规顺序排列(Standard原创 2021-01-04 11:50:08 · 525 阅读 · 0 评论 -
微信公众号获取用户头像、昵称等信息
微信公众号网页可以获取用户头像昵称等信息,具体怎么获取看代码:前端代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width, initial-scale=1.0, use原创 2020-12-28 17:43:07 · 6804 阅读 · 0 评论 -
PHP 前端ajax中content-type为“application/json“的post过来的数据 $_POST接受不到的问题
ajax默认是以application/x-www-form-urlencoded方式提交。那么data就应该对应的是json对象。也就是常见的表单提交方式。在PHP中使用$_POST方式可以轻松获取。但如果将ajax的请求头强制指定为application/json,那么ajax发送的就必须是字符串。那么你的$_POST就接受不到了。必须使用$GLOBALS['HTTP_RAW_POST_DATA'](或者file_get_contents('php://input'))取出来,然后再json_dec原创 2020-11-19 10:28:31 · 521 阅读 · 0 评论 -
乐观锁与悲观锁
我们都知道锁的种类一般分为乐观锁和悲观锁两种,InnoDB 存储引擎中使用的就是悲观锁,而 按照锁的粒度划分,也可以分成行锁和表锁。 乐观锁是一种思想,它其实并不是一种真正的『锁』,它会先尝试对资源进行修改,在 写回时判断资源是否进行了改变,如果没有发生改变就会写回,否则就会进行重试,在 整个的执行过程中其实都没有对数据库进行加锁; 悲观锁就是一种真正的锁了,它会在获取资源前对资源进行加锁,确保同一时刻只有有 限的线程能够访问该资源,其他想要尝试...原创 2020-11-16 15:02:06 · 224 阅读 · 1 评论 -
include、require、include_once、require_once 的区别
include、require、include_once、require_once 的区别 了解下include、include_once、require和require_once这4个函数:include函数:会将指定的文件读入并且执行里面的程序; require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容; include_once 函数:在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。...原创 2020-11-16 14:54:44 · 1735 阅读 · 0 评论 -
echo、print、print_r、var_dump 区别
echo 和 print 是语言结构、print_r 和 var_dump 是普通函数 echo:输出一个或多个字符串 print:输出字符串 print_r:打印关于变量的易于理解的信息 var_dump:打印关于变量的易于理解的信息(带类型)...原创 2020-11-16 14:47:30 · 251 阅读 · 0 评论 -
centos7源码安装php5.6
由于yum源安装php5.6后的php版本为5.6.40,然后remi员中mbstring扩展安装上不能使用提示版本问题,试了很多方法没解决于是源码安装,而且以前也一直没有源码装过所以也相当于学习一次。php的下载地址,大家需要安装哪个版本就去找对应版本下载http://php.net/downloads.php1: php编译安装,php的编译安装依赖的库比较多,编译安装会稍微难一点//安装epel EPEL的全称叫 Extra Packages for Enterpri..原创 2020-10-28 15:00:22 · 566 阅读 · 0 评论 -
-bash: /usr/bin/php: No such file or directory解决办法
今天测试机源码安装完php56,使用php -v时报错-bash: /usr/bin/php: No such file or directory原因:未找到可执行文件php解决办法:在/usr/bin/路径下 创建执行文件路径的硬链接//前面的地址是php安装地址 ln -s /usr/local/php/bin/php /usr/bin/php...原创 2020-10-28 11:45:36 · 4395 阅读 · 0 评论 -
Error: php72w-common conflicts with php-common-5.4.16-45.el7.x86_64
yum 安装php的时候,用命令yum -y install php*遇到提示phpxx-common conflicts with php-common这个错误信息,这时候可以看到Error: phpxx-common conflicts with php-commonYou could try using --skip-broken to work around the problemYou could try running: package-cleanup --problemspac...原创 2020-10-27 10:01:49 · 734 阅读 · 0 评论 -
PHP实现单例模式
单例模式的定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。PHP实现单例模式代码:class Singleton{ //创建静态私有的变量保存该类对象 static private $instance; //防止使用new直接创建对象 private function __construct(){} //防止使用clone克隆对象 private function __clone(){} static public fun原创 2020-10-24 18:48:42 · 330 阅读 · 0 评论 -
PHP Warning: POST Content-Length of 9182683 bytes exceeds the limit of 8388608 bytes in Unknown on
今天在上传图片的时候出现一个问题,使用自己写的上传没有问题,但是使用kindeditor组件的时候发现上传错误,在上传代码打各种断点发现也没有报错,就是没有上传文件,查看php.ini中的上传限制也是没问题的因为自己写的能上传啊。很纠结最后通过error_log文件找到了错误PHP Warning: POST Content-Length of 9182683 bytes exceeds the limit of 8388608 bytes in Unknown on line 0。...原创 2020-09-24 18:57:08 · 8385 阅读 · 1 评论 -
PHPexcel报出错误‘break‘ not in the ‘loop‘ or ‘switch‘ context
今天本地改代码改完做测试发现现在的文件中打开是 “break' not in the 'loop' or 'switch' context“这样的;当时一脸懵逼,这是一个老项目最近也没动啊怎么回事,然后去线上测试是好的弄得我是没脾气,仔细排查发现是本地环境PHP版本升级的影响。这个项目是5.6的但是本地我切换的7忘了换回来了。 如果大家是7的版本直接删除PHPexcel的break就可以了。...原创 2020-09-22 17:53:45 · 1142 阅读 · 1 评论 -
TP3框架中的字母M,D,C,A,I,S方法
M方法M实例化参数是数据库的表名//使用M方法实例化$User = M('User');//和用法$User = new /Think/Model ('User');等效//执行其他的数据操作$User->select();M 方法也支持垮库操作.//使用M方法实例化,操作db_name中的ot_user表$User = M('db_name.User','ot_');//执行其他的数据库操作$User->select();M方法的参数和/Think/Model的参数是一原创 2020-08-31 15:51:03 · 3440 阅读 · 1 评论 -
_initialize() 区别 __construct()
1、_initialize()方法是在任何方法执行之前,都要执行的,当然也包括_ _构造构造函数。也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用,而_construct构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系。2、_ _construct这里是双划线,而_initialize()函数是单划线3、如果父子类均有_initialize ()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的。4、默认情.原创 2020-08-31 14:22:11 · 812 阅读 · 1 评论 -
PHP explode() 函数与implode() 函数
1. implode() 函数用法:把数组元素组合为字符串;<?php $arr = array('Hello','World!','I','love','BeiJing!'); echo implode(" ",$arr);?>//Hello World! I love BeiJing!定义和用法 implode() 函数返回由数组元素组合成的字符串。 PS:implode() 函数接受两种参数顺序。但是由于历史原因,ex...原创 2020-08-07 16:14:01 · 1209 阅读 · 1 评论 -
PHP实现手机号或身份证号中间几位变*
在显示用户列表的场景中,一般用到手机号的显示时都需要对手机号进行处理,一般是把中间的四位换成星号****,今天我给大家总结了几种方法。$idcard = substr_replace($idcard ,"**********",4,10);$phone = substr($phone 7).'****'.substr($phone , 7);这是我的代码,在我的代码中我使用了两种不同的方式,一种是替换发一种是截取法。下面我总结了几种方法<?php$tel = '1323305648原创 2020-08-06 16:22:58 · 1104 阅读 · 1 评论 -
PHP利用ZipArchive实现多文件批量下载
二话不说直接上代码吧public function identityImgDown(){ $frontimg = '1.txt'; $backimg = '1.jpg'; $zpimg = '2.jpg'; $files = array($frontimg,$backimg,$zpimg); $zipName = 'identify.zip'; $zip = new \ZipArchive;//使用本类,linux需开启zlib,windows需取消php_zip.dll前的原创 2020-08-06 15:53:50 · 973 阅读 · 2 评论 -
linux定时任务crontab实现PHP脚本讲解
之前有篇文章提到了crontab一直也没补充,今天把它补上。什么是crontab?crontab 是一个用于设置周期性执行任务的工具。1.liunx系统输入service crondstatus(或者systemctl status crond)查看crontab的状态; 如果没有安装使用下列命令:yum install vixie-cron yum install crontabs 如果安装却没有开启服务使用 service crond start //启动服务 下面列...原创 2020-08-06 15:46:37 · 2348 阅读 · 3 评论 -
TP框架自带Http类实现下载文件(单一文件)
在TP框架中有一个自带的Http类可以实现下载,而且比较方便:public function imgdown(){ import('ORG.Net.Http'); $http = new \Org\Net\Http; $filename = "./uploads/1.jpg"; $showname ='1.jpg'; $http->download($filename,$showname);}代码很简单,希望能帮助到大家。所谓勇者,是心..原创 2020-08-06 15:16:38 · 2786 阅读 · 0 评论 -
php使用异或xor调换两个变量的值的原理
1、首先,我们要知道什么是异或,异或,简单来说就是:相同的两个数,异或的结果是0;不同的两个数,异或的结果是1。2、0和0,异或的结果是0。1和1,异或的结果是0。0和1,异或的结果是1。于是我们发现,在0和1的世界里:A和B异或,结果是C;B和C异或的结果一定是A;A和C异或的结果一定是B。$a = 0;$b = 1;$c = $a ^ $b; //A和B异或,结果是C$b = $b ^ $c; //B和C异或的结果一定是A,将A赋值给B$a = $b ^ $c; //A(原A,现B).原创 2020-07-31 12:08:30 · 837 阅读 · 2 评论 -
PHP连接MySQL数据库的几种方法
一直使用框架写东西,最近自己写一个简单脚本忽然发现最简单的连接数据库的知识记不太清楚了,特意记下来以便平时多复习。1.最简单的方式-mysql(面向过程)(不建议使用高版本PHP已经弃用,建议使用mysqli或PDO)<?php$con = mysql_connect("localhost","root","password");$select_db = mysql_select_db('test');if (!$select_db) { die("could n.原创 2020-07-31 12:03:23 · 2028 阅读 · 0 评论 -
PHP之call_user_func函数
call_user_func ———— 把第一个参数作为回调函数调用说明call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed第一个参数callback是被调用的回调函数,其余参数是回调函数的参数。参数callback将被调用的回调函数(callable)。parameter0个或以上的参数,被传入回调函数。Note:请注意,传...原创 2020-07-31 11:52:41 · 1213 阅读 · 2 评论 -
算法快速排序详解(代码PHP实现)
快速排序(Quicksort)是对冒泡排序的一种改进快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。排序流程快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组.原创 2020-07-30 11:49:37 · 718 阅读 · 2 评论 -
算法交换类排序之冒泡排序及优化详解(PHP代码实现)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。算法原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。原创 2020-07-23 19:06:18 · 1301 阅读 · 2 评论 -
TP框架中事务操作
在web开发中我们会进行多表关联插入操作,在TP框架中我们可以使用TP中的关联模型,但是今天我要给大家分享一个其他的方法,事务操作。$Model = M();$Model->startTrans();$res1 = $Model->table('productsku')->where($prosku)->save($sku2);$res2 = $Model->table('productskudetail')->add($data1);if($...原创 2020-07-03 16:15:02 · 448 阅读 · 3 评论 -
PHP中 empty()、isset()、isnull()的区别
empty如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。isset如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。is_null检测传入值原创 2020-06-23 16:32:41 · 331 阅读 · 4 评论 -
从命令行执行TP框架中某个方法的解决
最近在改项目时发现几个方法每个月初需要执行一次,以前使用的人少为了省事没有使用定时任务,采用的人工请求,现在使用的人多了老是多点,因此改成了定时任务,在liunx下使用的crontab做定时任务。但是发现TP中的某个function要在cli模式下运行不和浏览器一样不能使用inxex.php,因此通过查看相关文档解决了此问题,将此解决之道分享给大家节约大家时间。1.首先需要在index.php同级目录下创建一个cli.php(名字自定义),其实就是将index.php复制一遍然后改个名字,同时改点东原创 2020-06-12 18:45:38 · 962 阅读 · 3 评论 -
PHP根据身份证号码获取户口所在地
最近需要人员信息的户口所在地还必须保持一致,但是之前没有让用户输入因此根据网上的一些方法自己整理了一个方法分享给大家:/* * 根据身份证号码获取出身地址 * author:阿剂 * @param string $idcard 身份证号码 * @param int $type 类型 1位获取具体县区 2只获取省份 默认为1 * @return string $address*/function get_address($idcard, $type = 1) { .原创 2020-06-11 20:02:19 · 2035 阅读 · 7 评论