首页
VIP观影
美女套图
留言板
好友导航
推荐
影视在线
IDC销售
常用工具
高清壁纸
娱乐直播
Search
1
关于【套图】贡献者说明
6,610 阅读
2
利用CSS改变图片显示风格的方法 filter
3,709 阅读
3
女神朴信惠(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤
3,043 阅读
4
WJSSK_myfriend 我的好友(导航插件) 相关说明
1,641 阅读
5
随机小姐姐跳舞视频(6362个),源码分享
1,337 阅读
随笔
技术源码
Typecho
php
Vue
微信
资源分享
Happy 分享
好看的电影
好看的电视剧
登录
/
注册
Search
标签搜索
php
IDC
智简魔方
财务系统
主题
vue
Easypanel
centos
typecho
mqtt
宝塔bt
typecho插件
函数
云服务器
Kangle
docker
JavaScript
mosquitto
mosquitto-cluster
mosquitto-auth-plug
登录
Or
注册
累计撰写
128
篇文章
累计收到
422
条评论
首页
栏目
随笔
技术源码
Typecho
php
Vue
微信
资源分享
Happy 分享
好看的电影
好看的电视剧
页面
VIP观影
美女套图
留言板
好友导航
推荐
影视在线
IDC销售
常用工具
高清壁纸
娱乐直播
搜索到
73
篇与
技术源码
的结果
2022-07-02
PHP中spl_autoload_register() 函数详解
spl_autoload_register函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是 我们的new一个类的时候必须先include或者require的类文件,如果没有include或者require,则会报错。那这样我们就必须在文件头部写上许多include或require文件,非常麻烦;为了使得没有include或者require类的时候也正常new一个类,所以有了自动加载的概念,也就是说new一个类之前不用事先包含类文件也可以正常new,这样我们的文件头部就不用包含许多include或require。其实这算一种封装!{dotted startColor="#ff6c6c" endColor="#1989fa"/}用spl_autoload_register函数可以实现上面说的功能,我们来看看实现原理。这个函数的参数如下: spl_autoload_register(autoload_function, throw, prepend) # autoload_function # 这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要new 的类文件包含include(requeire)进来,这样new的时候就不会找不到文件了。其实就是封装整个项目的include和require功能。 # throw # 此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。 # prepend # 如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。{callout color="#a67cf3"}当我们new一个类,并且这个类文件没有被包含时候就会执行这个autoload_function方法:先来看一个错误例子:<?php //当我们直接new一个未包含class类文件时候会报错 $objDemo = new AutoloadClass(); /** Fatal error: Uncaught Error: Class 'AutoloadClass' not found in E:\work\demo\spl\autoloadDemo.php on line 3 Error: Class 'AutoloadClass' not found in E:\work\demo\spl\autoloadDemo.php on line 3 */ ?>使用spl_autoload_register方法<?php //文件 autoloadClass.php ,需要new的文件 class AutoloadClass{ public function __construct() { echo '你已经包含我了'; } } //文件autoloadDemo.php文件 spl_autoload_register('myAutoLoad', true, true); function myAutoLoad($className){ echo "所有的包含文件工作都交给我!\r\n"; $classFileName = "./{$className}.php"; echo "我来包含!{$classFileName}\r\n"; include "./{$className}.php"; } $objDemo = new AutoloadClass(); /** 输出: 所有的包含文件工作都交给我! 我来包含!./AutoloadClass.php 你已经包含我了 */ ?>{/callout}通过上面例子我们可以看到,当new一个未包含的类时候,会去执行spl_autoload_register第一个参数函数名的函数,这个函数有一个参数就是需要new的类名,这个函数的功能就是把这个类给包含进来(类名和文件名一致),这样就实现了自动加载功能。原理就是这样,不是很复杂。另外我们可以改为匿名函数来实现:<?php spl_autoload_register( function ($className) { echo "所有的包含文件工作都交给我!\r\n"; $classFileName = "./{$className}.php"; echo "我来包含!{$classFileName}\r\n"; include "./{$className}.php"; }, true, true); $objDemo = new AutoloadClass(); /** 输出: 所有的包含文件工作都交给我! 我来包含!./AutoloadClass.php 你已经包含我了 */ ?>
2022年07月02日
34 阅读
0 评论
0 点赞
2022-06-29
PHP中ob_start()函数的说明和用法
ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要发挥你的想象.可以总结以下四点:{dotted startColor="#ff6c6c" endColor="#1989fa"/}1. 用于header()之前<?php ob_start(); //打开缓冲区 echo /"Hellon/"; //输出 header("location:index.php"); //把浏览器重定向到index.php ob_end_flush();//输出全部内容到浏览器 ?>2. phpinfo()函数可获取客户端和服务器端的信息,但要保存客户端信息用缓冲区的方法是最好的选择.<?php ob_start(); //打开缓冲区 phpinfo(); //使用phpinfo函数 $info=ob_get_contents(); //得到缓冲区的内容并且赋值给$info $file=fopen(/'info.txt/',/'w/'); //打开文件info.txt fwrite($file,$info); //写入信息到info.txt fclose($file); //关闭文件info.txt ?>3. 静态页面技术<?php ob_start();//打开缓冲区 php页面的全部输出 $content = ob_get_contents();//取得php页面输出的全部内容 $fp = fopen("output00001.html", "w"); //创建一个文件,并打开,准备写入 fwrite($fp, $content); //把php页面的内容全部写入output00001.html,然后…… fclose($fp); ?>4. 输出代码<?php Function run_code($code) { If($code) { ob_start(); eval($code); $contents = ob_get_contents(); ob_end_clean(); }else { echo "错误!没有输出"; exit(); } return $contents; } ?>{mtitle title="以上都是摘取来的"/}
2022年06月29日
47 阅读
0 评论
0 点赞
2022-04-19
PHP header 的7种用法(转)
1.跳转页面header('Location:'.$url); //Location和":"之间无空格。 exit(); # 我自己测试过,最好加上这个结束一下!!2.声明content-typeheader('content-type:text/html;charset=utf-8');3.返回response状态码header('HTTP/1.1 404 Not Found');4.在某个时间后执行跳转header('Refresh: 10; url=http://www.baidu.com/'); //10s后跳转。5.控制浏览器缓存header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache");6.执行http验证header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Top Secret"');7.执行下载操作header('Content-Type: application/octet-stream'); //设置内容类型 header('Content-Disposition: attachment; filename="example.zip"'); //设置MIME用户作为附件 header('Content-Transfer-Encoding: binary'); //设置传输方式 header('Content-Length: '.filesize('example.zip')); //设置内容长度
2022年04月19日
77 阅读
0 评论
0 点赞
2022-03-09
最原始的没有任何面板的linxu PHP服务:lnmp 安装及使用说明
最近搞了个 hax.co.id 7天一续费的ipv6的免费vps,配置不高,内存450MB,磁盘空间5G。想着这么小能干嘛?...能!如果要装面板的话,只能装宝塔BT,因为只有宝塔BT才支持ipv6。其他面板,反正我没试出来。但是想着装宝塔的话,我还用个屁啊。就那么大空间...没办法只能想着装最原始的lnmp了。{callout color="#4da9ef"} LNMP (Linux - Nginx - MySQL - PHP)还有LNMPA (Linux - Nginx - MySQL - PHP - Apache){/callout}这个东西安装很简单,但是贼慢,谁用谁知道。官网安装命令:wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && ./install.sh lnmp之后根据提示选择你要安装的内容,就3个选择选数据库版本;选php版本;是否安装内存优化。其中需要注意的就是在选择数据库版本后会提示输入数据库密码,就是mysql的root密码。千万别乱填,要记住,不然后面有你好受的。慢慢去百度找:mysql root密码忘记如何解决? 然后就是一推巴拉巴拉,命令什么的巴拉巴拉。。。。唉,等安装好烦,都等了三个钟头了。{mtitle title="操作说明"/}添加网站(虚拟主机)第一步 执行:lnmp vhost add 在这里添加域名,回车后会提示录入更多域名 直接再输入要绑定的域名,多个域名空格隔开,如不需要绑其他域名就直接回车。{message type="warning" content="带www和不带www的是不同的域名,如需带www和不带的www的域名都访问同一个网站需要同时都绑定"/}第二步 设置网站的目录 网站目录不存在的话会创建目录。也可以输入已经存在的目录或要设置的目录(注意如要输入必须是全路径即以/开头的完整路径!!!)。不输入直接回车的话,采用默认目录:/home/wwwroot/域名{dotted startColor="#ff6c6c" endColor="#1989fa"/}::(what) 草不写了,安装失败!麻蛋。。。有需要的话,自己去官网看吧 https://lnmp.org/
2022年03月09日
74 阅读
0 评论
0 点赞
2022-02-11
PHP 通过域名检测验证SSL证书
因为测试域名比较多,而且强迫症就全加了免费的ssl,时间长了经常忘记,导致有的时候访问出错,所以就想着做个检测验证,刚好在网上也找到了,就记录一下工作流程添加域名列表添加定时器,访问检测链接检测链接,邮箱通知错误域名检测ssl方法function get_cert_info($domain){ $context = stream_context_create(['ssl' => [ 'capture_peer_cert' => true, 'capture_peer_cert_chain' => true, ], ]); $client = stream_socket_client("ssl://".$domain.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context); if($client==false) { return false; } $params = stream_context_get_params($client); $cert = $params['options']['ssl']['peer_certificate']; $cert_info = openssl_x509_parse($cert); return $cert_info; }调用方法$domain = 'www.baidu.com'; $cert_info = get_cert_info($domain); $validTo_time_t = $cert_info['validTo_time_t']; $validTo_time_d = date('Y-m-d H:i:s', $validTo_time_t); echo($validTo_time_d);
2022年02月11日
80 阅读
0 评论
0 点赞
2022-01-14
推荐7款好用的linux下web管理面板
对于好多新手web程序猿来说,在window下搭建个web服务直接安装phpstudy就行了,但是到linux系统下就蒙了,而且好多都安装无界面版本的,只能通过命令安装服务,就很难。。就这样就需要用到跟phpstudy一样的辅助工具,linux web 管理面板,下面推荐7款好用的linux下web管理面板宝塔面板宝塔面板是一款简单好用的网站管理面板,支持Windows和Linux,它对于新手非常的友好,让你无需任何代码就能搭建起自己的网站,其功能包括网站管理,在后台快速新建网站,管理已有站点数据库管理,一键备份优化数据库,并用phpMyAdmin管理数据系统监控,监控服务器的负载、CPU、内存、网络等参数,及时发现问题在线文件管理,无需FTP软件在后台就能传输和编辑文件计划任务,定期执行任务或命令,比如定期备份、定期清理日志、定期重启服务器等在宝塔软件商店中,还有很多官方或第三方的应用,包括防火墙、网络日志、Docker管理器、PM2管理器、Redis服务器等,还可以执行Linux命令,你可以找到很多有用的插件无论是新手还是专业的运维人员,宝塔面板都是一个很好的选择,对于新手可以帮你零基础搭建和维护网站,对于技术人员,宝塔的各种工具和插件则可以帮你节省时间、提高效率,让工作更简单宝塔面板搭建网站教程phpStudy小皮面板 - 让天下没有难配的php环境,永久公益免费!小皮面板是phpStudy新推出的一款Linux Docker容器面板,对于曾经在本地搭建过网站的朋友,相信很多人都熟悉phpStudy,它是一款简洁易用的本地集成环境。如今新的小皮面板同样也是非常的简单易用,它支持CentOS、Ubuntu、Debian、Fedora等全新的系统,仅需一行代码便可以安装。在功能上,小皮面板支持大部分建站常用的工具,包括网站管理、数据库管理、FTP管理、软件管理、防火墙、计划任务等,而且功能都是免费可用的,是一款值得使用的服务器管理面板小皮面板搭建网站教程AppnodeAppnode 是一款可视化的Linux集群服务器管理面板,它采用了集中式的设计,让你可以在多台服务器中安装并集中管理。Appnode 拥有强大的网站管理功能,提供Nginx、PHP、MySQL等网站套件,可以帮你快速搭建起可高效运行的网站,还支持伪静态、SSL证书、Gzip、页面跳转、定时备份等网站常用的功能,不需要熟悉代码也能优化网站另外,针对一些特定的用途,Appnode还提供了许多实用工具,比如Lsyncd同步、Supervisor进程托管、frp内网穿透、Redis服务器、Samba服务器等,如果你需要用到这些功能,部署起来会非常方便,不过需要注意一点就是Appnode目前只支持 CentOS,暂不支持 Ubuntu 和 DebianAppnode搭建网站教程cPanelcPanel 是一款国外知名的网站管理面板,因为功能多而且界面友好,许多主机商都使用cPanel作为网站管理面板,其网站支持的功能有文件管理,在线管理文件、编辑代码、备份文件数据库管理,使用phpMyAdmin可视化管理网站数据库域名管理,添加和配置域名,并设置它们邮件管理,可添加新的域名邮箱账户安全管理,SSL证书、SSH和IP管理,查看日志在cPanel面板中,创建和管理网站都是非常简单的事情,它可以帮你解决网站搭建过程中的大部分问题cPanel搭建网站教程Plesk - 付费的Plesk 是Parallels公司推出的一款的服务器虚拟主机管理系统,用来帮助IT人员和建站用户更加高效的管理服务器和网站,它的特色包括集中管理,在单个面板中同时管理、更新、监控多个站点扩展工具,通过各种扩展让你在面板中使用更多功能,比如Cloudflare、NodeJs、PHP、Let’s Encrypt、Git等WordPress工具,使用WordPress工具包快速建立、管理站点,使用快捷操作邮件系统,可以在Plesk中为网站设置企业域名邮箱Plesk 是一款非常优秀的网站管理面板,它不仅是帮助你更快速搭建网站,还能够让你轻松使用各种扩展,比如WordPress、SEO、安全等方面,它是一个功能全面的网站管理系统Plesk搭建网站教程DirectAdmin - 付费的DirectAdmin 是一款老牌的网站管理系统,它提供了一种更好的方式来管理服务器,你可以直接在网页中对网站进行管理,包括在线编辑文件和代码、使用phpMyAdmin管理数据库、制作网站备份、管理域名和用户、切换PHP版本等,提升网站的速度和稳定性DirectAdmin搭建网站教程AMHAMH 是一款国内开源的云主机面板,它定制性非常强,可以搭建各种类型的环境,功能包括网站环境管理,支持LNMP和LAMP数据库和网站文件管理FTP账号和运行状态管理SMTP邮局管理,无限域名邮箱绑定系统管理,异常监控、计划任务等AMH 还支持非常多的程序软件,可以帮你快速搭建起各种网站所需环境AMH搭建网站教程
2022年01月14日
335 阅读
0 评论
0 点赞
2021-12-08
Vue 点击时间(其他事件) 获取父元素,子元素,兄弟元素(DOM操作)
<ul @click ="clickfun($event)"> <li></li> </ul>methods: { clickfun(e) { //是你当前点击的元素 e.target //是你绑定事件的元素 e.currentTarget //获得点击元素的前一个元素 e.currentTarget.previousElementSibling.innerHTML //获得点击元素的第一个子元素 e.currentTarget.firstElementChild //获得点击元素的下一个元素 e.currentTarget.nextElementSibling // 获得点击元素中id为string的元素 e.currentTarget.getElementById("string") //获得点击元素的class属性 e.currentTarget.getAttributeNode('class') // 获得点击元素的父级元素 e.currentTarget.parentElement // 获得点击元素的前一个元素的第一个子元素的HTML值 e.currentTarget.previousElementSibling.firstElementChild.innerHTML } }
2021年12月08日
112 阅读
0 评论
0 点赞
2021-11-30
PHP 通过图片链接地址,用自己的域名显示图片
很多时候,采集一些内容的时候,都会采集到图片。想把图片存在服务器上吧,空间不太够,不存吧,通过图片人家就能看错,你这内容是哪里来的。反正这是我的一些想法。其实我最想表达的是,如何用自己的域名显示别人的图片!是不是很直观,不保证全部有用。但是应该会有和我一样想法的人吧。但是我这个方法有个缺陷。无法缓存,如果有大佬知道如何怎么解决。麻烦请告诉我。谢谢!说明我一般是先把源图片地址保存到数据库。然后通过自己的域名访问我们写好的页面调用这个图片。当然这个图片要是你能访问的,如果的墙外的图片链接,那请把你的代码也存放到国外服务器。代码说明{tabs}{tabs-pane label="方案一"}{callout color="#df80f9"}这是最简单的方法,直接用php的自带的函数file_get_contents(){/callout}// 请一定要加这个,不然显示不出来 header("Content-Type: image/jpeg;text/html; charset=utf-8"); $img = file_get_contents('你要显示的图片地址'); echo $img; exit();{/tabs-pane}{tabs-pane label="方案二"}// 请一定要加这个,不然显示不出来 header("Content-Type: image/jpeg;text/html; charset=utf-8"); @ob_end_clean(); @readfile($res['src']); @flush(); @ob_flush(); exit();{/tabs-pane}{tabs-pane label="方案三"}// 请一定要加这个,不然显示不出来 function _curl($url, $referurl = 'https://www.baidu.com/') { $ch = curl_init(); $header = array( 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding: gzip, deflate, br', 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7', 'Connection: keep-alive', 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"', 'sec-ch-ua-mobile: ?0', 'Sec-Fetch-Dest: document', 'Sec-Fetch-Mode: navigate', 'Sec-Fetch-Site: none', 'Sec-Fetch-User: ?1', 'Upgrade-Insecure-Requests: 1', 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36' ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, $url); //要抓取的网址 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时限制防止死循环 curl_setopt($ch, CURLOPT_HEADER, 0); // 查询显示返回的Header区域内容 curl_setopt($ch, CURLOPT_REFERER, $referurl); //模拟来源网址 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"); //$useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"; //curl_setopt($ch, CURLOPT_USERAGENT, $useragent); //模拟常用浏览器的useragent $page_content = curl_exec($ch); curl_close($ch); return $page_content; } header("Content-Type: image/jpeg;text/html; charset=utf-8"); $referurl = parse_url($res['src']); $referurl = $referurl['scheme'] . '://' . $referurl['host'] . ($referurl['port'] ? ':' . $referurl['port'] : '') . '/'; $img = _curl($res['src'], $referurl); echo $img; exit();{/tabs-pane}{/tabs}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{mtitle title="找个图片地址试一下吧"/} 试一下 方案一显示方案二显示方案三显示 $('#btn_for_test').on('click',function(){ let img_src = $('#test').val(); if(img_src == ''){ Qmsg.warning('请输入图片地址!'); return false; } $.post('https://api.wjssk.ga/imgrec',{img_src},function(res){ if(res.code){ $('#show_test_1').attr('src','https://api.iiask.ga/imgrec/show_img/type/1/id/'+res.data.img_id); $('#show_test_1').parent().attr('href','https://api.iiask.ga/imgrec/show_img/type/1/id/'+res.data.img_id); $('#show_test_2').attr('src','https://api.iiask.ga/imgrec/show_img/type/2/id/'+res.data.img_id); $('#show_test_2').parent().attr('href','https://api.iiask.ga/imgrec/show_img/type/1/id/'+res.data.img_id); $('#show_test_3').attr('src','https://api.iiask.ga/imgrec/show_img/type/3/id/'+res.data.img_id); $('#show_test_3').parent().attr('href','https://api.iiask.ga/imgrec/show_img/type/1/id/'+res.data.img_id); } },'json'); })
2021年11月30日
77 阅读
0 评论
0 点赞
2021-11-10
WJSSK_VipVideo Vip观影插件 相关说明
这是练手的第三个插件吧,当初是为了给页面增加一些特色功能,就找了好多也功能页面,然后慢慢集成Joe主题这个插件也是一样,目前css样式只能配合Joe主题使用(因为我只用过Joe){callout color="#ff3838"}视频解析接口的话,你们可以百度搜索一下,很多的。也可以去 ckplayer论坛 找一下。插件设置里,【例如】的内容都是可以正常使用的,别说我没告诉你。{/callout}{message type="info" content="添加独立页面,选择【vip观影】就可以在页面中显示了"/}{message type="error" content="插件启动是,会自动判断主题,如果主题不对的话,将无法启动。"/}可以自己去VipVideo\theme\目录下,查看一下,自己写页面。也可以找我,只需要提供一下你们主题里面的独立页面文件给我参考一下{tabs}{tabs-pane label="前端页面"}{/tabs-pane}{tabs-pane label="后台设置界面"}{/tabs-pane}{/tabs}{message type="warning" content="有问题记得提醒我,谢谢。。。。"/}{callout color="#ff5722"}类似问题一:同样是Joe主题,还是提示插件不支持这个就是主题的文件名不一样而已。你可以参考红色框里的内容将插件内VipVideo\theme\Joe_vipvideo.php文件名称修改成Joe-master_vipvideo.php{/callout}隐藏内容,请前往内页查看详情
2021年11月10日
674 阅读
30 评论
4 点赞
2021-11-08
Markdown 基本语法教程
Markdown 介绍Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(英语:John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。 如GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被使用来撰写电子书。{message type="info" content=" ! 注意:使用Markdown并不意味着您也不能使用HTML。您可以将HTML标签添加到任何Markdown文件中。如果您更喜欢某些HTML标记而不是Markdown语法,这将很有帮助。例如,有些人发现将HTML标签用于图像更容易。"/}常用介绍标题{tabs}{tabs-pane label="介绍"}一个#是一级标题,二个#是二级标题,以此类推,支持六级标题{message type="info" content="由于Joe主题的原因,对标题#有另外的样式封装,我就不显示演示"/}{message type="warning" content="注意点:标准语法一般在#后跟个空格再写标题"/}替代语法在文本下方的行上,添加任意数量的==表示一级标题,--二级标题。{/tabs-pane}{tabs-pane label="标记代码格式"}<!-- <h1>一级标题</h1> --> # 一级标题 <!-- <h2>二级标题</h2> --> ## 二级标题 <!-- <h3>三级标题</h3> --> ### 三级标题 <!-- <h4>四级标题</h4> --> #### 四级标题 <!-- <h5>五级标题</h5> --> ##### 五级标题 <!-- <h6>六级标题</h6> --> ###### 六级标题 <!-- <h1>一级标题</h1> --> 一级标题 ======= <!-- <h2>二级标题</h2> --> 二级标题 -------{/tabs-pane}{/tabs}段落{tabs}{tabs-pane label="介绍"}要创建段落,请使用空白行分隔一行或多行文本。您不应缩进带有空格或制表符的段落。 要创建换行符(<br>),请以两个或多个空格结束一行,然后键入回车。{/tabs-pane}{tabs-pane label="标记代码格式"}这是第一行 这是第二行{/tabs-pane}{/tabs}字体{tabs}{tabs-pane label="介绍"} 倾斜 文字左右用一个*倾斜*号包起来或着用一个_倾斜_加粗 文字左右用两个**加粗**包起来或着用两个__加粗__倾斜和加粗 文字左右用三个***倾斜和加粗***号包起来或着用___倾斜和加粗___加删除线 文字左右用两个~~加删除线~~包起来{/tabs-pane}{tabs-pane label="标记代码格式"}*倾斜* _倾斜_ **加粗** __加粗__ ***倾斜和加粗*** ___倾斜和加粗___ ~~加删除线~~{/tabs-pane}{/tabs}引用{tabs}{tabs-pane label="介绍"}用符号>进行引用,引用也可以嵌套,如加两个>> 三个>>>等等第一层第二层第三层第四层......{/tabs-pane}{tabs-pane label="标记代码格式"}> 第一层 >> 第二层 >>> 第三层 >>>> 第四层 >>>>> ......{/tabs-pane}{/tabs}列表{tabs}{tabs-pane label="介绍"}有序列表<ol><li>要创建有序列表,请在列表前添加数字和句点。数字不必按数字顺序排列,但列表应以数字开头。第一项第二项第三项第四项演示中的有序列表四种方式其实都是和上面一个效果无序列表<ul><li>要创建无序列表,请在列表前添加破折号(-),星号(*)或加号(+)。缩进一个或多个项目以创建嵌套列表。第一项第二项第三项第四项演示中的无序列表四种方式其实都是和上面一个效果{message type="warning" content="不论你如何写,请保证标识符在同一竖行(也就是同一缩进)"/}{/tabs-pane}{tabs-pane label="标记代码格式"}<!--有序列表 方法一--> 1. 第一项 2. 第二项 3. 第三项 4. 第四项 <!--有序列表 方法二--> 1. 第一项 1. 第二项 1. 第三项 1. 第四项 <!--有序列表 方法三--> 1. 第一项 8. 第二项 3. 第三项 5. 第四项 <!--有序列表 方法四--> 1. 第一项 2. 第二项 3. 第三项 1. 缩进项 2. 缩进项 4. 第四项 <!--无序列表 方法一--> - 第一项 - 第二项 - 第三项 - 第四项 <!--无序列表 方法二--> * 第一项 * 第二项 * 第三项 * 第四项 <!--无序列表 方法三--> + 第一项 * 第二项 - 第三项 + Fourth item <!--无序列表 方法四--> - 第一项 - 第二项 - 第三项 - 缩进项 - 缩进项 - 第三项 {/tabs-pane}{/tabs}代码{tabs}{tabs-pane label="介绍"}如果是段落上的一个函数或片段的代码可以用反引号把它包起来(`)例如:php中格式化json用`json_encode`函数代码区块用三个(`)标识,或着使用 4 个空格或者一个制表符(Tab 键)。{/tabs-pane}{tabs-pane label="标记代码格式"}php中格式化json用`json_encode`函数 <!--由于演示就是在代码块中,所以我就大概演示一下--> (在这里加上三个(```)表示代码块开始) $(document).ready(function () { alert('Shakespeare says, to be or not to be, that's the question!'); }); (在这里加上三个(```)表示代码块结束){/tabs-pane}{/tabs}链接{tabs}{tabs-pane label="介绍"}简单用法Wjssk我就试试看https://www.wjssk.com高级用法这个链接用 1 作为网址变量 Wjssk我就试试看这个链接用 baidu 作为网址变量 百度一下然后在文档的结尾为变量赋值(网址){/tabs-pane}{tabs-pane label="标记代码格式"}<!--简单用法--> [Wjssk我就试试看](https://www.wjssk.com) <https://www.wjssk.com> <!--高级用法--> 这个链接用 1 作为网址变量 [Wjssk我就试试看][1] 这个链接用 baidu 作为网址变量 [百度一下][baidu] 然后在文档的结尾为变量赋值(网址) [1]: https://www.wjssk.com [baidu]: https://www.baidu.com/{/tabs-pane}{/tabs}图片{tabs}{tabs-pane label="介绍"}简单用法高级用法这个链接用 1 作为图片链接变量 .然后在文档的结尾为变量赋值(网址){/tabs-pane}{tabs-pane label="标记代码格式"}<!--简单用法-->   <!--高级用法--> 这个链接用 1 作为图片链接变量 ![微信订阅号][1]. 然后在文档的结尾为变量赋值(网址) [1]: https://lady.please-fuck.me/5eZd1Jko9.jpeg{/tabs-pane}{/tabs}表格{tabs}{tabs-pane label="介绍"}Markdown 制作表格使用 | 来分隔不同的单元格,使用 - 来分隔表头和其他行。基本语法表头表头单元格单元格单元格单元格对齐方式我们可以设置表格的对齐方式:-: 设置内容和标题栏居右对齐。:- 设置内容和标题栏居左对齐。:-: 设置内容和标题栏居中对齐。左对齐右对齐居中对齐单元格单元格单元格单元格单元格单元格{/tabs-pane}{tabs-pane label="标记代码格式"}<!--基本语法--> | 表头 | 表头 | | ---- | ---- | | 单元格 | 单元格 | | 单元格 | 单元格 | <!--对齐方式--> | 左对齐 | 右对齐 | 居中对齐 | | :-----| ----: | :----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 |{/tabs-pane}{/tabs}具体学习地方Markdown 教程 | 菜鸟教程
2021年11月08日
103 阅读
0 评论
0 点赞
2021-11-03
苹果cms-V10(MacCms-V10) 后台图片保存至图床功能
前段时间,在群里看到有不少人想给maccms v10采集的视频图片上传到自己的图床或着公共图床。然后没事,我就研究了一下。 其实不难,稍微懂点thinkphp5.0就ok了。{card-describe title="展示一下"}{/card-describe}主要就是两个文件,一个php文件,一个html文件{tabs}{tabs-pane label="php文件(Wjssk.php)"}{message type="info" content="看心情起个名字,首字母要大写,我就起 Wjssk.php"/}将文件上传到后台的application/common/extend/upload/目录下。Wjssk.php内容namespace app\common\extend\upload; // 注意点 class后面的内容要和文件一直,注意首字母大写 class Wjssk{ public $name = 'WJSSK公共图床'; public function submit($filePath){ // 其实你们要是自己用,都不用搞这样,可以 // $api = "http://domain/upload";直接写你的图片上传地址,或着图床api地址 // 这里主要是获取从后台设定的地址 $api = $GLOBALS['config']['upload']['api']['wjssk']['api']; // 文件上传名称,由于不同的api接口对应上传的文件字段名不一样,所以这里也自定义一下 $field = $GLOBALS['config']['upload']['api']['wjssk']['field']; // 上传成功后返回图片地址的json路径 $reback = $GLOBALS['config']['upload']['api']['wjssk']['reback']; // 下面就是常规的php curl 文件上传 if (class_exists('CURLFile')) { // php 5.5 $post[$field] = new \CURLFile(realpath($filePath)); } else { $post[$field] = '@' . realpath($filePath); } // 创建一个新 cURL 资源 $curl = curl_init(); // 设置URL和相应的选项 // 需要获取的 URL 地址 curl_setopt($curl, CURLOPT_URL, $api); #启用时会将头文件的信息作为数据流输出。 curl_setopt($curl, CURLOPT_HEADER, false); #在尝试连接时等待的秒数。设置为 0,则无限等待。 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); #允许 cURL 函数执行的最长秒数。 curl_setopt($curl, CURLOPT_TIMEOUT, 30); #设置请求信息 //设置post方式提交 curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); #关闭ssl curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); #TRUE 将 curl_exec获取的信息以字符串返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 抓取 URL 并把它传递给浏览器 $return = curl_exec($curl); curl_close($curl); //删除本地图片 unlink($filePath); $return = json_decode($return, true); // 知道路径的话可以直接返回 // return $return['data']['url']; $reback = explode('||',$reback); $res = $return; // 例如返回的json:{"code":1,"data":{"src":"imgsrc.jpg"}} // 那么 $reback就等于 data||src foreach($reback as $r){ $res = $res[trim($r)]; } return $res; // 最终只需要返回图片的地址就行。 } }{/tabs-pane}{tabs-pane label="html文件"} {message type="info" content="这里的名字我就起 wjssk.html"/}将文件上传到后台的application/admin/view/extend/upload/目录下。wjssk.html内容<div class="layui-form-item upload_mode mode_Wjssk" {if condition="$config['upload']['mode'] neq 'Wjssk'"}style="display:none;" {/if}> <label class="layui-form-label">图床接口:</label> <div class="layui-input-block"> <input type="text" name="upload[api][wjssk][api]" placeholder="请填写图床接口" value="{$config['upload']['api']['wjssk']['api']}" class="layui-input" > </div> </div> <div class="layui-form-item upload_mode mode_Wjssk" {if condition="$config['upload']['mode'] neq 'Wjssk'"}style="display:none;" {/if}> <label class="layui-form-label">上传字段名:</label> <div class="layui-input-block"> <input type="text" name="upload[api][wjssk][field]" placeholder="请填写上传字段名,可能是image、file等等" value="{$config['upload']['api']['wjssk']['field']}" class="layui-input" > </div> </div> <div class="layui-form-item upload_mode mode_Wjssk" {if condition="$config['upload']['mode'] neq 'Wjssk'"}style="display:none;" {/if}> <label class="layui-form-label">返回路径:</label> <div class="layui-input-block"> <input type="text" name="upload[api][wjssk][reback]" placeholder="请填写返回路径,data||src" value="{$config['upload']['api']['wjssk']['reback']}" class="layui-input" > </div> </div>{/tabs-pane}{/tabs}隐藏内容,请前往内页查看详情
2021年11月03日
950 阅读
36 评论
1 点赞
2021-10-28
WJSSK_myfriend 我的好友(导航插件) 相关说明
{callout color="#4defed"}突发奇想的灵感,想搞个友情链接。(其实就是想做个导航程序,但是不会写typeche的主题,所以就搞在插件里,先练练手)。很大部分参考了新版Joe主题(感谢78.AL)。如果有Bug或者您有好的想法,可以告诉我,我会看着改。{/callout}{message type="info" content="如果是其他模板的话,可以自己去myfriend\pages\myfriend.php文件下,查看一下,自己写页面。也可以找我,只需要提供一下你们主题里面的独立页面文件给我参考一下"/}{callout color="#f0ad4e"}静态资源cdn掉了( (╯‵□′)╯︵┴─┴ ),请切换一下,或者下载最新的请将https://static.myhosts.ga/切换为https://fastly.jsdelivr.net/gh/alanyuewei/static@latest/不好意思2021-11-03 10:36:56 星期三如果你的php版本低于7.0,那么请将myfriend/common.php文件中第107行修改一下// 原来的 $path = $url_parts['path'] ?? ''; // 改成下面的 $path = isset($url_parts['path']) ? $url_parts['path'] : ''; // 就好了2021-11-03 09:51:46 星期三数据库有一个问题!字段类型错了,不好意思!可以重新下载,或着自己改一下,下面是修改方法ALTER TABLE typecho_wjssk_myfriends MODIFY [COLUMN] 字段名 新数据类型 新类型长度 新默认值 新注释;{/callout}{message type="warning" content="特别说明,插件目前只支持显示在JOE主题下使用!其他主题尚未开发!"/}我的好友(导航插件) 功能介绍{x} 后台添加站点 {x} 后台审核站点 {x} 自主申请站点 {x} 自助审核站点(检测来源审核 referer ) {x} 站点数据导入/导出(JSON) {x} 后台添加站点添加站点自动获取站点信息 {x} 站点跳转等待界面(我觉得可以加个广告跳转也啥的,不同人不同用法) {x} 链接乱跳404页面(我知道有些站长就喜欢XJBL试,所以加一下防范一下,虽然没啥用) {x} 传送门(黑洞),随机站点跳转功能( 新 2021-11-01 12:22:40) {x} 公告(文字公告和图片公告)( 新 2021-11-01 12:22:40) { } 站点申请邮件提示,审核通过邮件提醒 ( 没多大意义 2021-11-02 17:20:33) {x} 后台自动检测站点是否可以正常访问( 新 2021-11-02 20:26:21) {x} 后台自动检测站点友联是否存在( 新 2021-11-02 20:26:21) { } 所有站点自动推送百度、搜狗、GOOGLE(感觉有点难) (不想(会)加这个功能){mtitle title="或许之后会有其他功能"/}插件测试环境php 7.0++Joe 7.0++mysql{message type="warning" content="php版本必须大于7.0,因为代码中有一些只有php7以后才出现的语法!"/}{tabs}{tabs-pane label="前台界面"}{/tabs-pane}{tabs-pane label="自助审核通过提示"}{/tabs-pane}{tabs-pane label="跳转界面"}{/tabs-pane}{tabs-pane label="插件界面"}{/tabs-pane}{tabs-pane label="管理界面"}{/tabs-pane}{tabs-pane label="管理界面新增/修改"}{/tabs-pane}{tabs-pane label="检测友链"}{/tabs-pane}{tabs-pane label="其他"}{/tabs-pane}{/tabs}{callout color="#f03d3d"}有什么bug或着改进的点,麻烦大家留言告诉我一下。另外有个说明,JOE主题自带的友链页面中,给友链超链接都加上了 rel="noopener noreferrer" ,导致无法正常自助审核! (╯‵□′)╯︵┴─┴ 有感兴趣的可以F12看一下还有就是是否需要站点详情页,那样就真的成导航站了,友链应该不太需要把!{/callout}{message type="warning" content="特别说明,插件目前只支持显示在JOE主题下使用!其他主题尚未开发!"/}隐藏内容,请前往内页查看详情
2021年10月28日
1,641 阅读
55 评论
1 点赞
1
...
3
4
5
...
7