php
程序员buddha2080
八零後程序员,技术过硬,诚信专业服务。主营:定制各类网站、app、小程序等企业信息化软件。联系微信:buddha2080
展开
-
本地phpstudy部署算命系统,用户端是H5页面,支持微信支付宝支付,支持微信支付宝登录
前端:HTML+CSS+Jquery。原创 2024-08-12 23:24:12 · 364 阅读 · 0 评论 -
职业技能鉴定服务中心(新闻系统+证书查询系统)
源码:git clone https://gitee.com/3539949703/certificate-website.git。后端采用ThinkPHP8,最新tp框架。采用三种技术实现新闻系统和证书查询系统。前端采用div+css布局。数据库采用MySQL。原创 2024-04-17 16:46:25 · 308 阅读 · 0 评论 -
PHP项目添加分布式锁,这里是ThinkPHP8框架实现分布式锁
查了各种博客及Redis官方文档,推荐了ronnylt/redlock-php这个扩展,进来发现这个扩展比较老旧了,支持PHP版本太老了。判断键是否存在和设置键及有效期是分两步来的,服务器卡的时候,放大了这两步操作的时间,导致了问题产生。背景:公司旧项目,最初访问量不多,单机部署的。后来,访问量上来了,有阵子很卡,公司决定横向扩展,后端代码部署了三台服务器。符合预期后,把这扩展安装到现有项目,优化了现有代码,测试上线,这里记录下,防止下回碰到类似问题又去重零解决此类问题。1、PHP项目安装扩展。原创 2024-01-13 11:47:21 · 823 阅读 · 1 评论 -
最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书
3、后台实现带图片excel数据导入,这个摸索了点时间,因为PHPExcel停止维护了,改了半天源码还有问题,最后放弃了,换了一个扩展。前提:朋友弄了一个培训机构,培训考试合格后,给发证书,需要一个证书查询系统。委托我给弄一个,花了几个晚上给写的证书查询系统。1、给一个证书模板、一寸照片、两个电子印章图片,这个技术点是:GD库添加水印技术,水印添加也包括文字水印。2、证书里的二维码,扫码就能扫码出来,是PHP生成二维码,其二维码中间也是支持加logo的。后端应用middleware.php中。原创 2024-01-08 11:53:06 · 1183 阅读 · 2 评论 -
PHP中excel带图片数据导入
已经停止维护,在PHP8的版本中,有些语法不支持,报错一堆,改了一堆,又还有一堆。所以决定找个替代的扩展:phpoffice/phpspreadsheet。,如果选择的phpoffice/phpspreadsheet版本不同,可能又有不同的坑存在,得进行一一排查。前提:有个需求需要实现带图片的excel数据导入数据库中,发现。在composer.json中加入。原创 2024-01-08 10:59:06 · 1167 阅读 · 0 评论 -
推流的方式播放视频
目录1 CentOS7安装ffmpeg1.1 升级yum1.2 安装Nux Dextop Yum源1.3 安装FFmpeg 和 FFmpeg开发包1.4 检验是否安装成功2 ffmpeg视频转ts切片并生成m3u8播放列表文件2.1 首先将视频文件转为视频编码h264,音频编码aac格式的mp4文件2.2 将mp4文件转为ts文件并生成m3u82.2.1 将mp4转为完整的ts2.2.2 将ts切片,并生成m3u8文件3 前端播放m3u8格式视频1 CentOS7安装ffmpeg1.1 升级yum原创 2021-09-18 16:56:06 · 273 阅读 · 0 评论 -
大视频大文件上传实现逻辑
先实现PHP语言里分割视频再合成视频逻辑1 把大视频或大文件根据固定大小分割成多块// 分割的块编号$i = 0;// 要分割的文件$fp = fopen("upload.mp4", "rb");// 记录分割后文件信息$file = fopen("upload.txt", "a");while (!feof($fp)) { $handle = fopen("video/upload.{$i}.mp4", "wb"); // 切割文件块设置为5M fwrite($ha原创 2021-08-30 11:17:10 · 304 阅读 · 0 评论 -
vue+element ui + tp6 前后端分离学徒管理系统
公司跟多个学校有一个校企合作项目,学徒制学生,一边读书,一边实训。公司提供多个公司多个岗位给学生进行轮岗实训。公司给了一个星期叫我撸出来,梳理清晰了业务逻辑就开干了。前端我选择了vue+element ui,后端就选择了tp6,springboot 和 laravel就留来下个系统开撸了。完成后,页面大体如下小结下应用到的技术点:后端应用到中间件,完成token校验、跨域校验、增删改写日志,路由采用的是资源路由,每个控制器7个方法,一般只采用了增删改查save、delete、update、原创 2021-07-19 15:22:03 · 821 阅读 · 2 评论 -
php应用curl请求去掉header信息
1. 前提在API接口开发中,经常会碰到一个场景,就是请求第三方接口,然而请求回来的接口数据并不是我们期望的数据那样。比如我们请求回来的数据是不希望带header头信息的数据,然而第三方接口返回数据格式偏偏有header头的信息,怎么办呢?下面展示两种做法:$no = "9830106220207";$appcode = "6e8a1e3ee8fc4ddda7d6cc5bf999d53d";$host = "https://kuaidi101.market.alicloudapi.com";$p原创 2020-11-06 15:01:59 · 3486 阅读 · 1 评论 -
php向redis list一次性lpush多个值
1. 目的业务上有需求,希望PHP向Redis的list一次性写入多个值2. 操作2.1 Redis语法是否支持$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->del('foo');$res = $redis->lPush('foo', '1', '2', '3', '4');var_dump($res); // int(4)2.2 利用call_user_func_array实现lPus原创 2020-11-06 14:56:08 · 1559 阅读 · 1 评论 -
C语言实现PHP自定义扩展
1. 目的一个项目核心代码用C语言来编写,PHP环境建立的时候编译成PHP扩展,达到保证项目商业机密不外泄2. PHP源码安装2.1 环境依赖安装# 依赖安装yum install -y gcc libxml2 *openssl* libcurl* libjpeg* libpng* freetype* libzip* libmcrypt*2.2 源文件下载# 进入这个目录,把PHP源码下载到这里cd /usr/local/src # 下载源码wget -c https://www原创 2020-11-06 14:53:10 · 893 阅读 · 0 评论 -
PHP利用JWT实现token和refresh_token
0. 引入composer require firebase/php-jwtrequire __DIR__ . '/vendor/autoload.php';use Firebase\JWT\JWT;1. 生成tokenpublic function getToken(){ $key = 'key'; // key $time = time(); // 当前时间 $token = [ 'iss' => 'http://www.buddha.c原创 2020-11-06 14:47:01 · 1638 阅读 · 1 评论 -
获取字符串长度函数和中英文字符串截取
mb_strlen和mb_substr函数1. mb_strlen函数mb_strlen — 获取字符串长度# 按照utf-8格式获取字符串长度mb_strlen($string, 'utf-8')2. mb_substr函数mb_substr — 获取部分字符串# 按照utf-8格式获取部分字符串mb_substr($string, $start, $length, 'utf-8')3. 中英文字符串长度计算及截取function getSubstr($string, $sta原创 2020-10-29 13:51:02 · 138 阅读 · 0 评论 -
PHP开发生成二维码
1. composer安装composer require endroid/qrcode2. PHP生成二维码require_once __DIR__ . '/vendor/autoload.php';use Endroid\QrCode\ErrorCorrectionLevel;use Endroid\QrCode\QrCode;$set_logo = true;$qrCode = new QrCode('http://baidu.com');if($set_logo == tru原创 2020-10-23 10:29:49 · 173 阅读 · 0 评论 -
PHP应用RSA加密解密和签名验签(复制黏贴就能用)
1. RSA类/** * RSA算法类 * 签名及密文编码:base64字符串/十六进制字符串/二进制字符串流 * 填充方式: PKCS1Padding(加解密)/NOPadding(解密) * * Notice:Only accepts a single block. Block size is equal to the RSA key size! * 如密钥长度为1024 bit,则加密时数据需小于128字节,加上PKCS1Padding本身的11字节信息,所以明文需小于117字节 */原创 2020-10-20 09:20:18 · 225 阅读 · 1 评论 -
PHP使用阿里云对象存储OSS
1. 安装composer require aliyuncs/oss-sdk-php2. 图片上传实例代码require 'vendor/autoload.php';use OSS\OssClient;use OSS\Core\OssException;$accessKeyId = "LTAIUI7GG1Nq1m8Q";$accessKeySecret = "US5VAcaUNOHK46jbw8LCAuBFL4wVmO";// Endpoint以北京为例,其它Region请按实际情况填原创 2020-10-19 15:03:42 · 805 阅读 · 0 评论 -
Nginx重写URL配置PHP多入口
1. 问题描述PHP项目有多个入口文件,如入口文件:index.php,admin.php,app.php,api.php常规访问如下:http://www.domain.com/index.php/xxx/xxx/...http://www.domain.com/admin.php/xxx/xxx/...http://www.domain.com/app.php/xxx/xxx/...http://www.domain.com/api.php/xxx/xxx/...不想让用户从URL地址原创 2020-10-14 10:28:42 · 555 阅读 · 0 评论 -
vue做前端,thinkphp6做后台,项目部署
前后端分离开发完毕打包后,面临上线部署问题,一种做法是前后端分开来部署。前端nginx服务器配置反向代理;另外一种做法是把打包好的前端代码放置ThinkPHP框架Public目录下,默认访问index.html即可location /admin/ { proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_原创 2020-08-25 14:10:32 · 2522 阅读 · 2 评论 -
vue前后端分离开发解决跨域的问题
开发时配置vue.config.js解决跨域module.exports = { devServer: { port: 8080, host: "0.0.0.0", https: false, // 协议 open: true, // false 启动服务时自动打开浏览器访问 proxy: { '/admin': { target: "http://admin原创 2020-08-25 13:59:23 · 455 阅读 · 0 评论 -
RBAC实现前后端分离菜单实现、角色、权限功能实现
实现效果如下图数据库设计原创 2020-08-24 18:36:07 · 760 阅读 · 0 评论 -
实现发红包02
1. 生成红包代码class Red{ /** * @var int 红包总金额 */ private $total; /** * @var int 红包个数 */ private $num; /** * @var float 红包最小额 */ private $min; ...原创 2019-02-19 17:37:19 · 176 阅读 · 1 评论 -
实现发红包01
1. 生成红包代码class Red{ /** * @var int 红包总金额 */ private $total; /** * @var int 红包个数 */ private $num; /** * @var float 红包最小额 */ private $min; ...原创 2019-02-19 17:30:14 · 168 阅读 · 0 评论 -
array_filter使用场景
1. array_filter,常用来过滤数组元素,比较常用的用法是,过滤等值为false的元素$arr = [0, 1, 2, false, '', null, "0"];$arr = array_filter($arr);print_r($arr); // Array ( [1] => 1 [2] => 2 )2. 项目中,经常用0代表女性,0代表启用等,所以0本身...原创 2019-02-01 03:12:45 · 13633 阅读 · 0 评论 -
unset用法
unset最常使用# 销毁一个变量unset($name)# 销毁单个数组元素unset($userInfo['name'])# 其实也可以同时销毁多个变量unset($name, $age, $sex)在函数中unset一个全局变量,只销毁了局部变量$name = "buddha";function getInfo() { global $name; unset($n...原创 2019-02-01 02:58:37 · 5984 阅读 · 0 评论 -
二维数组按某键排序代码
第一种方式实现$arr 是需要排序的二维数组$field 是二位数组某键function my_sort($arr, $field) { $tmp = []; $res = []; foreach($arr as $k => $v) { $tmp[$k] = $v[$field]; } // arsort() 函数对关联数组按照键值原创 2017-12-09 14:43:31 · 149 阅读 · 0 评论 -
php里实现跳转的三种方式
// header()函数// 1、跳转的地址如果有加https或http,跳转的就不是相对地址 header("Location:index.php?m=admin&c=manage&a=login");// 确保重定向后,后续代码不会被执行exit;// 实现定时后跳转header("refresh:3;url=https://www.baidu.com");// print('正在加载原创 2017-12-09 14:31:27 · 577 阅读 · 0 评论