首页
关于
留言
友情链接
推荐
粽子SHOP
Search
1
粽子SHOP即时到账 微信插件(MyWechat)
4,970 阅读
2
PS人像美颜插件 DR5.0增强版 一键人像磨皮/美白/高低频
4,164 阅读
3
彩虹聚合登录API源码/上元二开 QQ互联分发
3,000 阅读
4
Windows Navicat Premium16.3.2 免安装 绿色汉化版
2,961 阅读
5
LayuiTable导出所有数据,无需修改后端代码
2,519 阅读
程序源码
PHP源码
HTML源码
精品程序
易语言源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
thinkPHP
登录
Search
标签搜索
python
typescript
swoole
docker
thinkphp6
php
composer
composer命令
tp6
tp中间件
vue
node.js
粽子shop
thinkSwoole
timi
王者荣耀
王者荣耀ios扫码
layer
layer图片预览
layer图片
烂掉的ay
累计撰写
94
篇文章
累计收到
1,022
条评论
首页
栏目
程序源码
PHP源码
HTML源码
精品程序
易语言源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
thinkPHP
页面
关于
留言
友情链接
推荐
粽子SHOP
搜索到
94
篇与
EN
的结果
2022-06-24
PHP自动加载机制,Autoloader、spl_autoload_register
php自动加载DEMO创建autoloader.php文件<?php /** * * 自动载入函数 */ class Autoloader { /** * 向PHP注册在自动载入函数 */ public static function register() { spl_autoload_register(array(new self, 'autoload')); } /** * 根据类名载入所在文件 */ public static function autoload($className) { echo "自动加载-文件名--".$className."<br>"; // DIRECTORY_SEPARATOR:目录分隔符,linux上就是’/’ windows上是’\’ $filePath = __DIR__ . DIRECTORY_SEPARATOR . $className; $filePath = str_replace('\\', DIRECTORY_SEPARATOR, $filePath) . '.php'; echo "自动加载-文件路径--".$filePath."<br>"; if (file_exists($filePath)) { require_once $filePath; } else { echo "无法加载" . $filePath; } } }创建 test1.php 、 test2.php 文件test1.php<?php include 'autoloader.php'; Autoloader::register(); echo Dog::ww(); echo "<hr>"; echo \lib\msg\Msg::json_en(['code'=>1,'msg'=>'哈哈哈哈']); echo "<hr>"; $view = \lib\View::dispaly(); test2.php<?php include 'autoloader.php'; Autoloader::register(); use lib\msg\Msg; use lib\View; echo Dog::ww(); echo "<hr>"; echo Msg::json_en(['code'=>1,'msg'=>'哈哈哈哈']); echo "<hr>"; $view = View::dispaly(); Dog、View、Msg就是需要被自动加载的类文件,
2022年06月24日
279 阅读
0 评论
0 点赞
2022-06-24
PHP压缩打包文件成 .zip
使用PHP将文件、文件夹打包成zip压缩包。打包单个文件$zip = new ZipArchive(); $zip_filename = "down/".time().".zip"; // 压缩包存放路径与名称 $zip->open($zip_filename, ZIPARCHIVE::CREATE); // 打开压缩包,没有则创建 // 参数1是要压缩的文件,参数2为压缩后,在压缩包中的文件名「这里我们把 logo.png 文件压缩,压缩后的文件为 logon2.png」,如果需要的压缩后的文件跟原文件名一样 addFile() 的第二个参数可以改为 basename("img/logon2.png),也就是原文件所在的路径 $zip->addFile("img/logo.png",basename("logon2.png")); $res = $zip->close();打包多个文件<?php $fileList = array( "img/1.jpg", "img/2.jpg", ); $filename = "down/img.zip"; // 压缩包存放路径与名称 $zip = new ZipArchive(); $zip->open($filename,ZipArchive::CREATE); //打开压缩包 //遍历文件 foreach($fileList as $file){ $zip->addFile($file,basename($file)); //向压缩包中添加文件 } $zip->close(); //关闭压缩包打包某个文件夹(包含子文件夹)<?php /** * @param $path 文件夹路径 * @param $zip zip 对象 */ function addFileToZip($path, $zip) { $handler = opendir($path); //打开当前文件夹由$path指定。 while (($filename = readdir($handler)) !== false) { if ($filename != "." && $filename != "..") { //文件夹文件名字为'.'和‘..’,不要对他们进行操作 if (is_dir($path . "/" . $filename)) { // 如果读取的某个对象是文件夹,则递归 addFileToZip($path . "/" . $filename, $zip); } else { //将文件加入zip对象 $zip->addFile($path . "/" . $filename); } } } } $zip = new ZipArchive(); $zip_filename = "down/files.zip"; // 压缩包存放路径与名称 $zip->open($zip_filename, ZIPARCHIVE::CREATE); // 打开压缩包,没有则创建 //调用函数,添加文件到压缩包中 addFileToZip("img",$zip);
2022年06月24日
1,430 阅读
0 评论
0 点赞
2022-05-20
layui.layer 预览图片自适应大小
引入layer,给图片增加一个点击事件就OK了 var src = $(this).attr("src"); lookPicture(src,1); /** * layer 图片预览自适应 * @param resourcesUrl * @param resourcesType 传 1 就OK了 */ function lookPicture(resourcesUrl,resourcesType) { // resourcesUrl:接受的图片地址,resourcesType之前定义的数据类型(可省略) if (resourcesUrl == "") { layer.msg("没有发现图片!"); return; } var img = new Image(); img.onload = function () {//避免图片还未加载完成无法获取到图片的大小。 //避免图片太大,导致弹出展示超出了网页显示访问,所以图片大于浏览器时下窗口可视区域时,进行等比例缩小。 var max_height = $(window).height() - 100; var max_width = $(window).width(); //rate1,rate2,rate3 三个比例中取最小的。 var rate1 = max_height / img.height; var rate2 = max_width / img.width; var rate3 = 1; var rate = Math.min(rate1, rate2, rate3); //等比例缩放 var imgHeight = img.height * rate; //获取图片高度 var imgWidth = img.width * rate; //获取图片宽度 var imgHtml = "<img src='" + resourcesUrl + "' width='" + imgWidth + "px' height='" + imgHeight + "px'/>"; //弹出层 if (resourcesType ==1 ) { layer.open({ type:1,//可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层) shade: 0.6, // maxmin: true, anim: 2, title: false, // title: '图片预览',// title: false, area: ['auto', 'auto'], // skin: 'layui-layer-nobg', //没有背景色 shadeClose: true, content: imgHtml }); } } img.src = resourcesUrl; }
2022年05月20日
1,539 阅读
0 评论
2 点赞
2022-04-23
爱奇艺一键任务助手 PHP源码
爱奇艺一键完成任务助手支持扫码登录,包含:签到/抽奖/积分任务/视频播放/VIP日常任务。走官方接口,开源不加密。安装使用PHP环境,上传即可,有手就行程序功能界面截图{cloud title="爱奇艺任务助手PHP源码" type="lz" url="https://0en.lanzouq.com/iyUQi03ngxkb" password=""/}
2022年04月23日
930 阅读
11 评论
2 点赞
2022-03-30
jquery.autocomplete 基本样式与使用方法
Jq.autocomplete 用法引入JS<script src='js/jquery.min.js?v=20220330' type='text/javascript'></script> <script src='js/jquery.autocomplete.min.js' type='text/javascript'></script>CSS样式/* //2022-03-30 AY input搜索插件 */ .autocomplete-suggestions { border: 1px solid #999; background: #FFF; overflow: auto;cursor: pointer } .autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; } .autocomplete-selected { background: #F0F0F0; } .autocomplete-suggestions strong { font-weight: normal; color: #3399FF; }html与js <input type="text" id="title" /> <script> $("#title").autocomplete({ serviceUrl: 'index.php?m=bug&f=ajax&action=searchTitle', dataType:"json", type:"POST", deferRequestBy:200, }) </script> PHP代码 $queryKey = $postData->query; //获取关键字 $searchTitleList = "select title as value,id as data from table";//查询数据 $data = ['query' => $queryKey,'suggestions' => $searchTitleList]; //按格式返回 exit(json_encode($data,320));
2022年03月30日
722 阅读
0 评论
0 点赞
2022-03-29
基于layui Table的一个简单搜索功能,支持多条件搜索
给公司老系统开发功能,老系统的搜索模块需要提交整个页面,而且代码很乱配置很杂。于是基于layui Table自己手写了一个简单搜索功能,可以多条件搜索。就这样吧,记录一下,以后再优化。 # 获取用户列表 (可选,select下拉选项) $ulist = $this->administration->getUserListByValid("account as k,realname as v"); # 待搜索字段 $searchFields = [ ['text'=>'维修产品型号','field' => 'typeid','type' => 'input','values'=>''], ['text'=>'维修日期','field' => 'repair_time','type' => 'date','values'=>''], ['text'=>'维修处理状态','field' => 'state_text','type' => 'input','values'=>''], ['text'=>'更好材料型号','field' => 'change_typeid','type' => 'input','values'=>''], ['text'=>'维修联系人','field' => 'repair_name','type' => 'input','values'=>''], ['text'=>'维修联系人电话','field' => 'repair_phone','type' => 'input','values'=>''], ['text'=>'经办人','field' => 'repair_account','type' => 'select','values'=>$ulist], ['text'=>'费用','field' => 'repair_money','type' => 'input','values'=>''], ]; $optionHtml = ""; foreach ($searchFields as $field){ $optionHtml .= '<option value="'.$field['field'].'">'.$field['text'].'</option>'; }<div style="padding-top: 20px;text-align: center;display: none" id="searchBox"> <!-- $searchFields array 字段列表 text 展示文字 field 数据库字段 type 类型 input 输入 select 下拉选择 date日期选择 values 默认值 type为select时 values为数组 k=>v $optionHtml 下拉选择 搜索键 前端依赖 jquery 选择器 zui 表单样式 layui.laydate 日期选择模块 --> <div class="" style="max-width: 720px;margin: 0 auto"> <!-- 初始化第一个搜索条件 --> <div class="row searchBox searchBox_1" data-index="1"> <div class="col-xs-3"> <select class="form-control input-sm" id="field_1" onchange="ayFieldChange(1,this.value)"> <?php echo $optionHtml; ?> </select> </div> <div class="col-xs-2"> <select class="form-control input-sm" id="condition_1"> <option value="eq"> = </option><option value="gt"> > </option><option value="lt"> < </option><option value="elt"> <= </option> <option value="egt"> >= </option><option value="nq"> 不等于 </option><option value="%"> 包含 </option> </select> </div> <div class="col-xs-3" id="value_box_1"> <input type="text" class="form-control input-sm" id="value_1" placeholder=""> </div> <div class="col-xs-2"> <select class="form-control input-sm" id="where_1" onchange="ayWhereChange(1,this.value)"> <option value=""> 无更多条件 </option> <option value="and"> 并且 </option> <option value="or"> 或者 </option> </select> </div> <div class="col-xs-1"> <button class="searchBtn btn btn-sm btn-blue">搜索</button> </div> <div class="col-xs-1"> <button class="closesearchBtn btn btn-sm btn-blue">清空搜索</button> </div> </div> <script> let nextIndex = 2; // 下一个搜索条件下标 let searchFields = <?=json_encode($searchFields)?>; // 搜索字段数据 let optionHtml = '<?=$optionHtml?>'; // 搜索字段下拉option /** * 监听选中搜索字段 生成对应类型的输入框 * @param index * @param fieldValue */ function ayFieldChange(index,fieldValue){ for(var i = 0;i<searchFields.length;i++){ var tempFields = searchFields[i]; if(tempFields.field == fieldValue){ if(tempFields.type == "select"){ var inputHtml = "<select class='form-control input-sm' id='value_"+index+"'>"; for(var k=0;k<tempFields.values.length;k++){ inputHtml += "<option value='"+tempFields.values[k]['k']+"'>"+tempFields.values[k]['v']+"</option>"; } inputHtml += "</select>"; $("#value_box_"+index).html(inputHtml); }else if(tempFields.type == "date"){ var inputHtml = '<input type="text" class="form-control input-sm" id="value_'+index+'" placeholder="">'; $("#value_box_"+index).html(inputHtml); console.log("value_"+index); layui.laydate.render({ elem: "#value_"+index ,type: 'date' }); }else{ var inputHtml = '<input type="text" class="form-control input-sm" id="value_'+index+'" placeholder="">'; $("#value_box_"+index).html(inputHtml); } } } } /** * 添加搜索条件 * @param index * @param where */ function ayWhereChange(index,where){ if(index < nextIndex-1) return; if(where == "and" || where == "or"){ var html = '<div data-index="'+nextIndex+'" class="row searchBox searchBox_'+nextIndex+'">'+ '<div class="col-xs-3">' + '<select class="form-control input-sm" id="field_'+nextIndex+'" onchange="ayFieldChange('+nextIndex+',this.value)">' + optionHtml+ '</select></div>'+ '<div class="col-xs-2">'+ '<select class="form-control input-sm" id="condition_'+nextIndex+'"> '+ '<option value="eq"> = </option><option value="gt"> > </option><option value="lt"> < </option><option value="elt"> <= </option>'+ '<option value="egt"> >= </option><option value="nq"> 不等于 </option><option value="%"> 包含 </option>'+ '</select> </div>'+ '<div class="col-xs-3" id="value_box_'+nextIndex+'">'+ '<input type="text" class="form-control input-sm" id="value_'+nextIndex+'" placeholder="">'+ '</div>'+ '<div class="col-xs-2">'+ '<select class="form-control input-sm" id="where_'+nextIndex+'" onchange="ayWhereChange('+nextIndex+',this.value)">'+ ' <option value=""> 无更多条件 </option>'+ ' <option value="and"> 并且 </option>'+ ' <option value="or"> 或者 </option>'+ '</select>'+ ' </div>'+ '</div>'; nextIndex++; $(".searchBox_"+index).after(html) } } /** * 获取所有搜索条件 * @returns {any[]} */ function buildSearch(){ var searchBoxlist = $(".searchBox"); var where = new Array(); for (var i = 1;i<=searchBoxlist.length;i++){ var line = {}; line['field'] = $("#field_"+i).val() line['condition'] = $("#condition_"+i).val() line['value'] = $("#value_"+i).val()==undefined?"":$("#value_"+i).val() line['where'] = $("#where_"+i).val() where.push(line); if( line['where'] == "") break; } return where; } </script> </div> <!-- 搜索轮子 --> </div> <!-- --------------------- 搜索结束 --------------------- -->// 监听搜索 $(".searchBtn").click(function (){ var where = buildSearch(); table.reload('testReload', { page: { curr: 1 //重新从第 1 页开始 } ,where: { where } }); }) // 清空搜索 $(".closesearchBtn").click(function (){ table.reload('testReload', { page: { curr: 1 //重新从第 1 页开始 } ,where: [] }); }) /** * 构建where条件 * @param $where * @return string */ public function buildWhereSql($where){ $conditionChar = ["lt" => "<", "gt" => ">", "eq" => "=", "nq" => "<>", "egt" => ">=", "elt" => "<=",]; if(!$where){ return " 1 = 1 "; } $sql_str = ""; $next_where = ""; foreach ($where as $row){ if($next_where){ # 如果还有条件,使用上一次的连接条件 拼接SQL $sql_str .= " ".$next_where; } # 开始拼接where条件 $field = $row['field']; # 字段 $condition = $row['condition']; # 条件 $value = $row['value']; # 值 $s_str = " `$field` "; if($condition == "%"){ $s_str .= " like '%$value%'"; }else{ $zcahr = isset($conditionChar[$condition])?$conditionChar[$condition]:"="; $s_str .= " $zcahr '$value'"; } $next_where = $row['where']; $sql_str.=$s_str; if(empty($next_where)) break; } return $sql_str; }
2022年03月29日
2,244 阅读
0 评论
3 点赞
2022-03-20
彩虹聚合登录API源码/上元二开 QQ互联分发
本程序基于彩虹聚合快捷登录(V1.0 开源版)二次开发,为中小网站快速提供免审核QQ互联服务。如果有其他登录方式的需求,建议购买彩虹聚合登录最新版。本源码目前仅支持QQ{x} 一键安装 {x} 自助申请 {x} 开发文档 {x} 后台管理 {x} 只需要申请一次(QQ互联官方免费申请),即可分发给无数网站平台使用演示平台:https://login.api.lenes.cn/如何下载使用?1. 上元二开版(开通程序包可用) 只需要开通了上元程序包即可使用上元系统所有程序。上元程序包介绍:https://www.0en.cn/archives/20.html{anote icon="fa-link" href="https://shop.lenes.cn/home/goods.html?id=14&sid=31" type="success" content="点击开通"/} {dotted startColor="#ff6c6c" endColor="#1989fa"/}2. 彩虹原版(完全免费) 原版较二开版少一些功能,但也可以使用,回复即可下载源码隐藏内容,请前往内页查看详情截图展示如何申请审核?{x} 域名需备案 {x} QQ互联申请地址:https://connect.qq.com/,申请的时候不要用本程序直接去申请,否则不可能通过。 {x} 操作流程建议先搭建一个Discuz论坛(源码下载:https://gitee.com/3dming/DiscuzL/attach_files)在后台开启QQ互联(登录论坛->管理中心->插件->QQ互联->启用->配置刚刚申请的应用appid与appkey),确保前台有显示QQ快捷登录按钮,或者其他论坛程序去申请。申请成功之后再把域名换绑定到本程序。(也可以先申请,等审核过后,再删掉论坛,安装本程序)
2022年03月20日
3,000 阅读
82 评论
1 点赞
2022-03-19
PS人像美颜插件 DR5.0增强版 一键人像磨皮/美白/高低频
支持系统{x} Windoes {x} Mac插件版本{x} 5.0安装使用安装后,在 PS -> 窗口 -> 扩展功能 打开插件面板插件简介包含Windos/Mac版本,PS智能插件DR5.0 一键人像磨皮/美白/高低频插件截图下载隐藏内容,请前往内页查看详情
2022年03月19日
4,164 阅读
146 评论
6 点赞
2022-01-27
粽子SHOP即时到账 微信插件(MyWechat)
在最新的粽子SHOP - `Ver3.1.3` 版本中,已经开放了即时到账的接口。开发者可以根据开放文档自主开发监听工具。不再经过第三方码支付平台,响应速度更快,漏单几率更小。
2022年01月27日
4,970 阅读
148 评论
3 点赞
2022-01-23
上元程序包介绍
{mtitle title="什么是上元程序包?"/}{callout color="#0f0f0f"}上元系列 多款精品程序{/callout}{mtitle title="目前有哪些程序?"/}{tabs}{tabs-pane label="1⃣️上元自主下单系统"}多种发货模式 ( 手动/自动/货源对接(彩虹/亿乐/九五/卡卡云/同系统)/URL提交 )多等级用户系统文章系统优惠券系统邮箱通知图片存储( 本地 / 阿里云OSS )多套模版支持0元商品详细介绍:http://www.qzoner.cn/post-44.html演示地址:https://shop.lenes.cn/home/goods.html?id=13&sid=32{/tabs-pane}{tabs-pane label="2⃣️上元微信公众号助手"}引流神器,支持九五/亿乐社区/直客SUP关键字回复,自定义回复内容,支持 文字/图片/语音/图文公众号素材管理公众号粉丝管理引流数据统计详细介绍:https://www.0en.cn/archives/19.html演示公众号(在微信中搜索公众号):远走的粽子{/tabs-pane}{tabs-pane label="3⃣️上元聚合登录系统"}一键分发QQ快捷登录自助申请一键安装后台管理详细介绍:http://www.0en.cn/archives/31.html{/tabs-pane}{tabs-pane label="4⃣️其他..."}更多程序敬请期待{/tabs-pane}{/tabs}{lamp/}{mtitle title="常见问题"/}{collapse}{collapse-item label="开通程序包之后这些程序都可以使用吗?"} 是的,都可以使用。{/collapse-item}{collapse-item label="后续还会更新新程序吗?"} 会的{/collapse-item}{collapse-item label="怎么开通和管理?"} 开通地址:https://shop.lenes.cn/。 管理地址:https://package.auth.qzoner.cn/ 开通之后登陆到管理平台,每个程序都有对应的管理控制台{/collapse-item}{collapse-item label="每个程序的授权都是独立的吗?"}是的。登陆管理平台后,每个程序都可以设置对应的授权域名,不绑定同一个域名。{/collapse-item}{/collapse}
2022年01月23日
1,180 阅读
0 评论
1 点赞
1
...
8
9
10