php
每天都进步一点点
这个作者很懒,什么都没留下…
展开
-
php获取文件列表(所有子目录文件)
返回所有文件的路径列表原创 2024-03-26 09:46:21 · 802 阅读 · 0 评论 -
ThinkPHP框架使用工厂模式对接多个物流公司下单接口架构示例(php5.6)
由于 PHP 5.6 不支持 throw 关键字后面直接使用 \InvalidArgumentException 这种命名空间方式,我们需要对其进行调整。原创 2024-02-17 15:41:56 · 3019 阅读 · 1 评论 -
ThinkPHP框架使用工厂模式对接多个物流公司下单接口架构示例(php7.0及以上)
对接多个物流公司下单接口和获取物流支持目的地接口,用ThinkPHP框架使用工厂模式写了一个示例,包括如何创建目录及文件命名方式。原创 2024-02-17 11:27:10 · 3073 阅读 · 0 评论 -
php工厂模式
在PHP中,工厂模式是一种创建型设计模式,用于将对象的创建过程封装到一个单独的类(即工厂类)中。通过使用工厂模式,客户端代码不需要知道如何实例化具体的产品类,而是直接与抽象接口或工厂进行交互,从而获得所需产品对象。这个练习展示了如何根据传入的不同参数动态地创建不同类型的对象,这就是简单工厂模式的基本应用。当然,在实际项目中,工厂可能更加复杂,包含更多的逻辑和验证步骤。原创 2024-02-01 09:30:52 · 2961 阅读 · 0 评论 -
php创建日志
php创建日志,并判断目录不存在则自动创建目录原创 2024-02-01 13:45:00 · 2848 阅读 · 0 评论 -
composer禁止拉取phpunit
composer禁止拉取phpunit原创 2022-08-25 10:12:51 · 139 阅读 · 0 评论 -
使用htaccess文件禁止目录里的脚本执行权限
.htaccess文件原创 2022-06-28 16:25:26 · 260 阅读 · 0 评论 -
记录一下大文件上传偶然成功偶然失败问题
项目情况:网站使用微软云服务器、负载均衡(多机运行)、微软云oss前端使用的是webuploader上传插件,该插件只有当文件上传成功之后,才能点击确认按钮。遇到的奇葩情况(webuploader分片上传):1、上传小文件,显示上传成功,点击确认按钮正常2、大一些的文件,显示成功,有时能点击确认按钮正常,有时点击按钮没反应后来找到的原因是:负载均衡分发 + 分片上传 导致偶然成功偶然失败,把负载均衡变为单机运行就没问题,或者把分片上传关闭也没问题解决方案:1:更改负载均衡规则,不要自动分配,改为原创 2022-06-27 10:39:48 · 490 阅读 · 0 评论 -
PHP解决中文显示乱码
不废话,上代码原创 2022-06-07 18:04:48 · 319 阅读 · 1 评论 -
php 上传大文件 超过40秒 服务器500
不说太多费话1、先找当前PHP版本的配置文件php.ini修改以下文件上传限制参数:max_execution_time = 600max_input_time = 600memory_limit = 1024Mpost_max_size = 1024Mupload_max_filesize = 1024M参数解释:max_execution_time:php超时设置max_input_time:脚本解析输入数据(类似 POST 和 GET)允许的最原创 2022-05-30 16:23:44 · 761 阅读 · 0 评论 -
判断是否手机端访问
function isMobile(){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) return true; //此条摘自TPM智能切换模板引擎,适合TPM开发 if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT']) return原创 2022-04-06 14:58:15 · 395 阅读 · 0 评论 -
简单接口验签
后端代码以下代码放在接口公共文件中$apiAuth = new ApiAuth();$signResult = $apiAuth->verifySign();if (!$signResult['code']) { $this->error($signResult['msg']);}ApiAuth类文件<?phpclass ApiAuth{ public function __construct(){ $this->params原创 2022-04-02 14:39:33 · 832 阅读 · 0 评论 -
表单form跨站请求伪造CSRF防御
CSRF防御,表单防御原创 2022-03-16 16:48:11 · 456 阅读 · 0 评论 -
PHP 阿里云发送短信
<?phperror_reporting(0);require_once ('SignatureHelper.php');header("Content-type:text/html; charset=UTF-8");/** * 发送短信 * mobile 手机号码 * TemplateParam 参数数组 * TemplateCode 模版CODE */function sendSMS_aliyun($mobile, $TemplateParam = array(),$原创 2022-03-08 15:43:44 · 6541 阅读 · 0 评论 -
文件大小 字节单位转换成KB,MB,GB,TB等单位
/** * 字节单位转换成KB,MB,GB,TB等单位 * * @param $file_size * * @return string * * @author qinglin */function byteSize($file_size){ $file_size = $file_size - 1; if ($file_size >= 1099511627776) $show_filesize = number_format(($file_size / 109951原创 2022-02-24 17:22:29 · 3915 阅读 · 0 评论 -
PHP 递归创建多级目录
$dir = ROOT_PATH . 'upload/images/20220224/1.jpg';createDir($dir);// 如果upload目录中,没有images目录和日期目录,则都会自动创建function createDir($dir) { return is_dir($dir) or (createDir(dirname($dir)) and mkdir($dir, 0777));}...原创 2022-02-24 13:41:40 · 327 阅读 · 0 评论 -
get_headers()获取文件大小,解决https链接报错问题
获取文件大小代码$file_size = @get_headers($file_path, 1);$file_size = $file_size['Content-Length'] ?? 0;获取https的链接时报错日志error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed[ error ] [2]get_headers(): Failed to enable crypto[ erro原创 2021-12-27 17:49:43 · 2305 阅读 · 0 评论 -
阿里云视频点播
记录一下服务端处理<?phpuse vod\Request\V20170321\GetPlayInfoRequest;$accessKeyId = '';$accessKeySecret = '';require_once WEB_ROOT.'vendor/voduploadsdk/Autoloader.php';// voduploadsdk为官方sdk目录文件try{ $uploader = new AliyunVodUploader($accessKeyId, $acce原创 2021-12-27 14:55:51 · 1326 阅读 · 0 评论 -
检测字符串编码并将编码改为utf-8
获取当前字符串的编码$encode = mb_detect_encoding($name, ['ASCII', 'UTF-8', 'GB2312', 'GBK', 'BIG5']);将字符编码改为utf-8$strUtf8 = mb_convert_encoding($str, 'UTF-8', $encode);原创 2021-12-08 11:37:55 · 985 阅读 · 0 评论 -
亲身经历的curl请求慢的原因
不要以为我文字少就不精华,网上说一大堆都说不到重点的有啥用。1、dns不稳定导致请求慢解决方案一:更换dns全国通用DNS地址首先DNS服务器地址:114.114.114.114备用DNS服务器地址:114.114.115.115全球通用DNS地址首选DNS服务器地址:8.8.8.8备用DNS服务器地址:8.8.4.4解决方案二:不更换dns的情况下,可以把curl的请求直接指定ip,这样就不会解析ip导致慢2、curl高并发或太多curl请求导致的,导致一直loading不处理这种情原创 2021-11-30 09:48:22 · 12930 阅读 · 1 评论 -
PHP 苹果内购iap支付
$receiptData = $_POST;// 验证参数if (strlen($receiptData['receipt']) < 1000) { return;}$receipt = $receiptData['receipt'];$receipt = urlencode($receipt);$receipt = str_replace('%2F','/',$receipt);$receipt = str_replace('%5C','',$receipt);$receip原创 2021-11-24 16:08:09 · 735 阅读 · 0 评论 -
php 操作数组 (合并,拆分,追加,查找,删除,交集,差集,键值,判断等)
1. 合并数组array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: array array_merge (array array1 array2…,arrayN) 这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。转载 2021-09-28 09:13:03 · 1043 阅读 · 0 评论 -
belongsTo和hasOne的区别
hasOne 正向关联,belongsTo 反向关联。简单的讲就是,没有太大的区别,只是在逻辑上出现的思想的偏差(逻辑的合理性)。belongsTo:可以理解为属于hasOne:可以理解为拥有首先,我们创建两张表。user表 字段 id name password字段user_address表 id user_id city字段不难看出,user_address是基于user扩展出来的表。我们可以说,user拥有user_address的外键,user_address的外键属于user。Us翻译 2021-09-15 16:06:22 · 1315 阅读 · 0 评论 -
PHP 解决导出csv中文数据乱码问题
网上查找一大堆方法,都试过。对我是没作用,还不如一句echo方法:在输出文件时,加上一个输出bom头代码就行 // 解决导出csv中文数据乱码问题 if(strtolower($type) == 'csv'){ echo "\xEF\xBB\xBF"; // UTF-8 BOM } $writer = IOFactory::createWriter($spreadsheet, $type); $writer-&g原创 2021-08-21 11:48:16 · 4929 阅读 · 0 评论 -
php 检测是否使用手机访问
在thinkphp5.0.24核心提取的常用函数代码/** * 检测是否使用手机访问 * @access public * @return bool */ public function isMobile() { if (isset($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], "wap")) { return true;原创 2021-08-18 10:42:52 · 962 阅读 · 0 评论 -
通过.htaccess代码更改上传大小限制
修改.htaccess文件原创 2021-07-08 14:36:50 · 328 阅读 · 0 评论 -
PHP 几分钟前 几小时前 昨天 前天 时间戳转换格式
// 发布时间提示function getFormatCreateTime($createTime){ // 当天最大时间 $todayLast = strtotime(date('Y-m-d 23:59:59')); $agoTimeTrue = time() - $createTime; $agoTime = $todayLast - $createTime; $agoDay = floor($agoTime / 86400); if ($agoTi原创 2021-06-30 11:50:48 · 9089 阅读 · 4 评论 -
php环境变量配置和composer配置教程
php环境变量配置我的电脑 > 鼠标右键 > 属性 > 高级系统设置 > 环境变量 > 选择path变量编辑 > 添加当前PHP环境的目录composer安装配置找到刚刚安装发composer安装目录把这两个文件放在php环境目录使用命令:composer -vv 查看配置是否成功...原创 2020-12-04 12:01:56 · 726 阅读 · 0 评论 -
找出当前目录文件名带有某个关键字的文件
<?phpprintDir('./');/** * 找出当前目录带有某个关键字的文件 * * @param $d ./ 当前目录 * * @author qinglin<1019893418@qq.com> */function printDir($d){ $dir = dir($d); while(false != $row = $dir->read()){ if($row == '.' || $row == '..') con原创 2020-11-25 11:30:09 · 2567 阅读 · 0 评论 -
PHP获取url链接,如果url不含.html则自动加上并跳转
// 请求连接不为空 && 请求连接不存在'.html' && 请求方式为get && 不是ajax请求之类的if(!empty($_SERVER['REQUEST_URI']) && strstr($_SERVER['REQUEST_URI'], '.html') == null && $_SERVER['REQUEST_METHOD'] == 'GET' && !isset($_SERVER['HTTP_X原创 2020-11-06 16:59:26 · 420 阅读 · 0 评论 -
PayPal支付时出现“该商家目前无法接受PayPal付款。请稍后重试,或返回商家页面并选择其他付款方式。”
该商家目前无法接受PayPal付款。请稍后重试,或返回商家页面并选择其他付款方式。如题,待解决。网上找不到相关资料,我就看看有多少人遇到这问题,看看有多少人看这篇文章。哈哈哈。。。。。...原创 2020-11-06 10:54:24 · 13742 阅读 · 6 评论 -
MySQL条件 判断时间段不能出现重叠/重复
项目记录(判断时间段不能出现重叠的条件):// 判断时间段是否有重叠$map = [ 'start_time|end_time' => ['between',[strtotime($_POST['start_time'])+1,strtotime($_POST['end_time'])-1]]];条件注解:查询数据库已有数据的开始时间或结束时间,如果有在提交数据的开始时间和结束时间之间,则存在重叠,则提示错误“时间段不能与已有活动的时间重叠!”能提交保存的:开始时间结束时间原创 2020-09-14 18:17:53 · 8115 阅读 · 0 评论 -
php获取“今日\昨日\上周\本周\本月”的起始时间戳和结束时间戳
//php获取今日起始时间戳和结束时间戳 $today_start = mktime(0,0,0,date('m'),date('d'),date('Y')); $today_end = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1; //php获取昨日起始时间戳和结束时间戳 $yesterday_start = mktime(0,0,0,date('m'),date('d')-1,date('Y')); $yesterday_end = mkt原创 2020-08-14 09:49:10 · 5821 阅读 · 0 评论 -
php 获取网站域名函数
echo getHttpHost();/** * 网站是否携带openSsl证书 * * @return bool */function isOpenSsl(){ $server = $_SERVER; if (isset($server['HTTPS']) && ('1' == $server['HTTPS'] || 'on' == strtolower($server['HTTPS']))) { return true; }原创 2020-07-03 10:52:48 · 510 阅读 · 0 评论 -
微信支付相关设置
1、登录微信公众平台:https://mp.weixin.qq.com/左侧栏 - 微信支付 - 商户号(确保已关联一个微信商户平台的商户号)左侧栏 - 微信支付 - 支付申请(确保已申请开通微信支付)左侧栏 - 设置 - 公众号设置 - 功能设置(相关域名设置项都设置好域名)左侧栏 - 设置 - 安全中心 - IP白名单(填写域名服务器IP)左侧栏 - 开发 - 基本设置(获取“开发者ID(AppID)”、“开发者密码(AppSecret)”参数)2、登录微信商户平台:https://pay.原创 2020-06-17 13:37:01 · 1813 阅读 · 0 评论 -
php 数据层级化
/** * 数据层级化 * * @param array $arrList 源数据 * @param int $parentId 父级Id * @param string $primaryKey 主键Id字段名 其对应值 作为 除第一次外的循环中的父级值 * @param string $parentKey 父级Id字段名 * @return array */function dataHierarchy(array $arrList, int $parentId = 0原创 2020-06-13 13:51:32 · 314 阅读 · 0 评论 -
php搜索本地文件名称资源数据
发现一个不错的东西,整理记录一下:php文件查找程序,输入一个路径确定后会遍历目录下所有的文件和文件夹,通过递归可以找到文件夹下面的每一个文件,再通过文件名和输入的关键字匹配,则可以查找到你想要的文件对于本地,我们可以利用windows自带的查找去进行查找,但是对于线上的话,如查找ftp空间里面文件,本程序是很有用的。看界面:上代码:<html> <head> <meta http-equiv="Content-Type" content="text/html转载 2020-06-05 08:45:27 · 670 阅读 · 0 评论 -
php 文件路径分离获取文件目录路径和文件名
$path = ‘/admin/goods/add.php’;dirname()函数d返回路径中的目录部分:echo dirname($path);输出的是 ‘/admin/goods’;basename() 函数返回路径中的文件名部分:echo dirname($path);输出的是 ‘add.php’;原创 2020-06-01 09:00:23 · 932 阅读 · 0 评论 -
微信授权获取微信地址源码
开发这个功能的时候,自己都踩了几个坑。引入一段官方步骤(大神可滤过):步骤一:绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。备注:登录后可在“开发者中心”查看对应的接口权限。步骤二:引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/原创 2020-05-14 11:53:53 · 2576 阅读 · 0 评论 -
thinkphp5 think\response\json Object 转数组
$result为json对象数据集可使用getContent()方法输出数组格式:print_r(json_decode($result->getContent(),true));原创 2020-01-16 18:59:54 · 3169 阅读 · 0 评论