首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,062 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,217 阅读
3
nps内网穿透实现外网访问树莓派
32,390 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,119 阅读
5
Typecho-Joe-Theme主题帮助文档
24,549 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
261
篇文章
累计收到
1,300
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
151
篇与
闲杂乱码
的结果
2020-03-15
用github做图床的一款typecho插件—GitStatic
GitHub图床typecho插件特点插件支持typecho自带附件上传访问速度超快 (你问速度吗?本文图片可全是秒加载)稳定性 (你问这个是怕最大的 ** 网站跑路吗?)免费白嫖 (没错就是白嫖)项目地址GitHub项目地址安装教程下载插件解压到插件目录获取 token创建仓库 (不会?别急创建仓库)设置插件用户名填入 github 账号填入 token储存桶填入仓库名没有 github 账号?注册呗后话插件处于公测阶段 不稳定性较大但是目前能够原生兼容typecho并且速度不会比 cos oss 差在后期计划对静态资源加速有问题可以留言啊
2020年03月15日
3,459 阅读
5 评论
3 点赞
2020-03-12
BT宝塔面板静态文件镜像库v7.1.1
仅适用于7.1.1(正式版)7.1.1更新原企业运维版更名为企业版增加企业版插件调整UI优化对Python3.8的兼容调整对部分新版本py组件的兼容7.2全新架构前詹性更新宝塔面板需要加载大量css和js静态资源,所以在国内和国外1M这样的小水管服务器上首次加载就变得特别慢,因此我建立了一个静态资源CDN原Bug:在线文件编辑问题;此版本:修复正常, 但是为了防止数据内容丢失我们不推荐您使用在线编辑!温馨提示:请您提前备份好网站数据再使用以下教程!我们直接对上个版本的静态资源CDN文件进行覆盖,使用7.1.0版本的用户请先升级为7.1.1最新版本再使用本站的教程!使用方法先升级宝塔面板为最新版本(7.1.1),然后进入宝塔面板,点击 文件 找到以下路径根目录/www/server/panel/BTPanel/templates然后下载本站提供的bt7.1.1压缩包,上传 – 解压。解压完成后删除bt7.1.0压缩包返回宝塔面板首页,重启一次版面;Ctrl+f5刷两次即可如出现宝塔文件,部分图标以及静态资源加载失败问题,点击宝塔首页右上角 修复 切换回本地加载;并把问题反馈到本站。 点击下载 转自基友博客:大米博客
2020年03月12日
1,217 阅读
0 评论
0 点赞
2020-03-11
PHP模拟浏览器上传文件(数据流形式上传)
用PHP上传文件基本都是临时存储,之后上传,怎么用PHP模拟浏览器以数据流形式上传文件思路及代码如下://网址 参数 文件 function upload($url, $p, $file) { $param = [ //此处根据实际文件的上传的 name 填写 'fileData' => file_get_contents(realpath($file)), ]; if (!empty($p)) { arrary_merge($p, $param); } $delimiter = uniqid(); $data = ''; $eol = "\r\n"; $upload = $param['fileData']; unset($param['fileData']); foreach ($param as $name => $content) { $data .= "--" . $delimiter . "\r\n" . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n" . $content . "\r\n"; } // 拼接文件流 name="fileData"; filename="1.png"' 根据实际的文件 name 和名字填写 或写个变量 //'Content-Type: image/gif'可改为'Content-Type:application/octet-stream' 由于我是测试的网站必须为 gif 所以就这样吧先 $data .= "--" . $delimiter . $eol . 'Content-Disposition: form-data; name="fileData"; filename="1.png"' . "\r\n" . 'Content-Type: image/gif' . "\r\n\r\n"; $data .= $upload . "\r\n"; $data .= "--" . $delimiter . "--\r\n"; $post_data = $data; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_HTTPHEADER, [ "Content-Type: multipart/form-data; boundary=" . $delimiter, "Content-Length: " . strlen($post_data), ]); $response = curl_exec($curl); curl_close($curl); return $response; }请根据实际情况进行实际调用
2020年03月11日
1,022 阅读
0 评论
0 点赞
2020-03-11
QQ扫码登陆详解 - 可做登陆或者授权程序下载
网站可以用QQ快速登录,PHP获取QQ信息,获取QQSkey等,自行使用。<?php header('Access-Control-Allow-Origin:*'); header('Content-type:application/json; charset=utf-8'); error_reporting(0); date_default_timezone_set("PRC"); !empty($_GET['type']) ? $type = $_GET['type'] : error("请求参数错误,请刷新重试!~~"); switch ($type) { case 'Getqrcode': echo json_encode(getqrcode()); break; case 'Getresult': !empty($_GET['qrsig']) ? $qrsig=$_GET['qrsig'] : error("请求参数错误,缺少qrsig~~"); echo json_encode(getresult($qrsig),JSON_UNESCAPED_UNICODE); break; default: echo json_encode(getqrcode()); } /** * 获取二维码 */ function getqrcode() { $qrcode = array(); $api = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=7&t=0.1415855' . time(); $paras['header'] = 1; $ret = get_curl($api, $paras); preg_match('/qrsig=(.*?);/', $ret, $matches); preg_match_all('/ (\d){3}/', $ret, $Conlen); $arr = explode('com;', $ret); $qrcode['qrsig'] = $matches[1]; $qrcode['data'] = base64_encode(trim($arr['1'])); return $qrcode; } /** * @param $qrsig * @return array * 获取登录状态 */ function getresult($qrsig) { $ret = array(); $api = 'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=' . urlencode('https://qzs.qzone.qq.com/') . '&ptqrtoken=' . getqrtoken($qrsig) . '&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-1-' . time() . '&js_ver=90220&js_type=1&login_sig=&pt_uistyle=40&aid=549000912&daid=5&has_onekey=1'; $paras['cookie'] = 'qrsig=' . $qrsig . ';'; $body = get_curl($api, $paras); if (preg_match("/ptuiCB\('(.*?)'\)/", $body, $arr)) { $r = explode("','", str_replace("', '", "','", $arr[1])); if ($r[0] == 0) { preg_match('/uin=(\d+)&/', $body, $uin); $ret['code'] = 1; $ret['data']['uin'] = $uin[1]; $ret['msg'] = 'QQ登录成功'; } elseif ($r[0] == 65) { $ret['msg'] = '登录二维码已失效,请刷新重试!'; } elseif ($r[0] == 66) { $ret['msg'] = '请使用手机QQ扫码登录'; } elseif ($r[0] == 67) { $ret['msg'] = '正在验证二维码...'; } else { $ret['msg'] = '未知错误001,请刷新重试!'; } } else { $ret['msg'] = '未知错误002,请刷新重试!'; } return $ret; } function get_curl($url, $paras = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $httpheader[] = "Accept:*/*"; $httpheader[] = "Accept-Encoding:gzip,deflate,sdch"; $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8"; $httpheader[] = "Connection:close"; curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); if ($paras['ctime']) { // 连接超时 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $paras['ctime']); } if ($paras['rtime']) { // 读取超时 curl_setopt($ch, CURLOPT_TIMEOUT_MS, $paras['rtime']); } if ($paras['post']) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']); } if ($paras['header']) { curl_setopt($ch, CURLOPT_HEADER, true); } if ($paras['cookie']) { curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']); } if ($paras['refer']) { if ($paras['refer'] == 1) { curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f='); } else { curl_setopt($ch, CURLOPT_REFERER, $paras['refer']); } } if ($paras['ua']) { curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']); } else { curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"); } if ($paras['nobody']) { curl_setopt($ch, CURLOPT_NOBODY, 1); } curl_setopt($ch, CURLOPT_ENCODING, "gzip"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($ch); curl_close($ch); return $ret; } /** QQ空间Token算法*/ function getqrtoken($qrsig) { $len = strlen($qrsig); $hash = 0; for ($i = 0; $i < $len; $i++) { $hash += (($hash << 5) & 2147483647) + ord($qrsig[$i]) & 2147483647; $hash &= 2147483647; } return $hash & 2147483647; } function error($str){ exit(json_encode([ "code"=>-1, "msg"=>$str ],JSON_UNESCAPED_UNICODE)); }
2020年03月11日
1,357 阅读
0 评论
1 点赞
2020-03-11
微信扫码登录详解 - 可做登录授权等
可用作微信扫码登录,扫码授权等,自行使用。<?php header('Access-Control-Allow-Origin:*'); header('Content-type:application/json; charset=utf-8'); error_reporting(0); date_default_timezone_set("PRC"); !empty($_GET['type']) ? $type = $_GET['type'] : error("请求参数错误,请刷新重试!~~"); switch ($type) { case 'Getqrcode': echo json_encode(getqrcode()); break; case 'Getresult': !empty($_GET['qrsig']) ? $qrsig=$_GET['qrsig'] : error("请求参数错误,缺少qrsig~~"); echo json_encode(getresult($qrsig),JSON_UNESCAPED_UNICODE); break; default: echo json_encode(getqrcode()); } /** * 获取二维码 */ function getqrcode() { $api = 'https://login.wx2.qq.com/jslogin?appid=wx782c26e4c19acffb'; $ret = get_curl($api); preg_match('/"(.*?)"/', $ret, $matches); $qrcode['data'] = 'https://login.weixin.qq.com/l/'.$matches[1]; $qrcode['uuid'] = $matches[1]; return $qrcode; } /** * @param $qrsig * @return array * 获取登录状态 */ function getresult($uuid) { $paras['ctime'] = 1000; $paras['rtime'] = 1000; $paras['refer'] = 'https://wx2.qq.com/'; $api = 'https://login.wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=' . $uuid . '&tip=0'; $body = get_curl($api, $paras); preg_match('/(\d){3}/', $body, $code); preg_match('/redirect_uri="(.*?)"/', $body, $url); if ($code[0] == '200') { $body = get_curl($url[1]); preg_match('/<wxuin>(\d*?)<\/wxuin>/', $body, $wxuin); $ret['code'] = 200; $ret['data']['uin'] = $wxuin[1]; $ret['data']['type'] = 'wx'; $ret['msg'] = '微信登录成功'; } else { $ret['code'] = 408; $ret['msg'] = '请使用手机微信扫码登录'; } return $ret; } function get_curl($url, $paras = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $httpheader[] = "Accept:*/*"; $httpheader[] = "Accept-Encoding:gzip,deflate,sdch"; $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8"; $httpheader[] = "Connection:close"; curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); if ($paras['ctime']) { // 连接超时 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $paras['ctime']); } if ($paras['rtime']) { // 读取超时 curl_setopt($ch, CURLOPT_TIMEOUT_MS, $paras['rtime']); } if ($paras['post']) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']); } if ($paras['header']) { curl_setopt($ch, CURLOPT_HEADER, true); } if ($paras['cookie']) { curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']); } if ($paras['refer']) { if ($paras['refer'] == 1) { curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f='); } else { curl_setopt($ch, CURLOPT_REFERER, $paras['refer']); } } if ($paras['ua']) { curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']); } else { curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"); } if ($paras['nobody']) { curl_setopt($ch, CURLOPT_NOBODY, 1); } curl_setopt($ch, CURLOPT_ENCODING, "gzip"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($ch); curl_close($ch); return $ret; } function error($str){ exit(json_encode([ "code"=>-1, "msg"=>$str ],JSON_UNESCAPED_UNICODE)); }
2020年03月11日
1,601 阅读
0 评论
0 点赞
2020-03-11
(PHP)Redis Hash(哈希)操作
(PHP)Redis Hash(哈希)操作/** * * Hash操作 * 哈希操作 * 可理解为数据库操作 * */ //为user表中的字段赋值。成功返回1,失败返回0。若user表不存在会先创建表再赋值,若字段已存在会覆盖旧值。 $redis->hSet('user', 'name', '222'); //获取user表中指定字段的值。若user表不存在则返回false。 $redis->hGet('user', 'realname'); //查看user表的某个字段是否存在,存在返回true,否则返回false。 $redis->hExists('user', 'realname'); //删除user表的一个字段,不支持删除多个字段。成功返回1,否则返回0。 $redis->hDel('user', '222'); //同时设置某个user表的多个字段值。成功返回true。 $redis->hMset('user', ['name' => 'jet', 'age' => 18]); //同时获取某个user表的多个字段值。其中不存在的字段值为false。 $redis->hMget('user', ['name', 'age']); //获取某个user表所有的字段和值。 $redis->hGetAll('user'); //获取某个user表所有字段名。user表不存在时返回空数组,key不为user表时返回false。 $redis->hKeys('user'); //获取某个user表所有字段值。 $redis->hVals('user'); //为user表中不存在的字段赋值。若user表不存在则先创建,若字段已存在则不做任何操作。设置成功返回true,否则返回false。 $redis->hSetNx('user', 'realname', 'jetwu'); //获取某个user表的字段数量。若user表不存在返回0,若user不是hash表则返回false。 $redis->hLen('user'); //为user表中的指定字段加上指定的数值,若user表不存在则先创建,若字段不存在则先初始化值为0再进行操作,若字段值为字符串则返回false。设置成功返回字段新值。 $redis->hIncrBy('user', 'age', 10); //为user表中的指定字段加上指定浮点数值。 $redis->hIncrBy('user', 'age', 1.5);
2020年03月11日
1,458 阅读
0 评论
0 点赞
2020-03-11
PHP中include,require,include_once,require_once的区别详解
前言在做程序设计的时候避免不了要去引用外部文件,在 PHP 中引入文件的方式有很多种,这里详细说一下 include ;require ;include_once;require_once。`require ()` 语句的性能与 `include ()` 相类似,都是包括并运行指定文件。除了处理失败的方式不同之外。`require` 在出错时产生 `E_COMPILE_ERROR` 级别的错误,终止脚本运行;而 `include` 只产生警告`(E_WARNING)`,脚本会继续运行。1.include 和 require 都是语句结构(并不是函数)在 php 官网手册上是划分到了流程控制,这两个语句结构不是函数。详情可参考 http://php.net/manual/zh/function.include.php所以,它可以不加圆括号,直接加引号来包含文件。我习惯不加圆括号。include '01_var.php'; 或者 include('01_var.php'); 或者 require '01_var.php'; 或者 require('01_var.php');2. 对于处理失败的方式不同(最主要的区别)对于引入的文件找不到情况下。(这里确保当前文件夹下面不存在 no.php)在 01_include_require 文件下编写如下代码:include 'no.php'; echo 'End!';//会输出include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。require 'no.php'; echo 'End!';//不会输出require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。3. 对 include 和 require 引入文件的实质对 include () 语句来说,在执行文件时每次都要进行读取和评估;对于 require () 来说,文件只处理一次(实际上,文件内容替换 require () 语句)这就意味着如果可能执行多次的代码,则使用require () 效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用 include () 语句。4.include_once 和 require_once 的作用使用方法与不加后缀一样,加上_once 后缀 意味着如果该文件中的代码已经被包括进来了,就不会再次包括。因为有些情况下,在脚本执行期间,同一个文件有可能包含超过一次的情况下,为了确保只包含一次,避免函数重定义,或者是变量的重新赋值的问题。include_once '01_var.php'; require_once '01_var.php';使用场景如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。在框架复杂的 php 应用程序编程中,请始终使用 require向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。包含文件省去了大量的工作。例如在 thinkphp 框架 index 入口引入核心代码就是利用 require 引入的。require 通常放在 php 脚本程序最前面,php 再执行程序前,就会先读取 require语句引入的文件,使之成为 php 脚本文件的一部分。include 通常用在流程控制的处理部分中,php 脚本在读到 include的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
2020年03月11日
1,095 阅读
0 评论
0 点赞
2020-03-09
Akina for Typecho 使用介绍
本篇文章我将介绍如何去更好的了解使用 Akina for Typecho 模板,感受它独特的灵魂和魅力。使用前我应该做什么请将akina\images\avatar.jpg替换为自己头像 全局使用QQ头像将Akina\images\donate内收款图片替换为自己的收款码,(当然不替换也行)在后台设置-评论 允许使用<img src="">标签 ,否则将不能正常使用表情。主题层面关闭反垃圾保护、启用分页、将第一页作为默认显示、将较新的的评论显示在前面。主题层面评论允许img标签关于表情因为每个人的域名都是不一样的,为了适应这个,表情链接不能够写死。博主修改了相关js使其自动获取网站地址,但是这样改完后仅且只能使用图标包,即“img”标签主题自带一种表情包,可仿照其格式自行添加表情。主页(hmoe.php)设置Akina 提供了一个独特的首页页面在博客后台-设置-阅读-站点首页选择直接调用 hmoe.php模板文件,并勾选 同时将文章列表页路径更改为/blog(当然可以改成其他的,但要同时修改模板里路径home.php)其他页面在管理-独立页面-新增页面中友链必须为links.html结尾。关于必须为about.html结尾。留言必须为message.html结尾。归档必须为archives.html结尾。自定义模板选择名字相同模板(如多没有选择page),建议配置伪静态。typecho伪静态apache配置<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] </IfModule>nginx配置server { listen 80; server_name yourdomain.com; root /home/yourdomain/www/; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location ~ .*\.php(\/.*)*$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } access_log logs/yourdomain.log combined; }之后在后台 设置->永久连接->启用地址重写功能->选择wordpress风格 即可友链写法!!! <br/> <div class="links"> <ul class="link-items fontSmooth"> <li class="link-item"><a class="link-item-inner effect-apollo" href="http://zhebk.cn/" title="我们,渺小到不可一世。" target="_blank" ><span class="sitename">纸盒博客</span><div class="linkdes">我们,渺小到不可一世。</div></a></li> ...... </ul> </div> !!!画廊图片写法!!! <a href="大图片地址" alt="说明" title="标题"><img class="aligncenter" src="小图片地址" alt="说明"></a> !!!下载按钮写法!!! <p> <a id="download_link" class="download" href="下载url" rel="external" target="_blank" title="下载地址"> <span><i class="iconfont icon-download"></i>点击下载</span> </a> </p> !!!标签样式#H1标签##H2标签###H3标签####H4标签#####H5标签后台模板设置提供网站副标题、DNS预解析加速、CDN镜像加速、备案号 等信息填写特别注意 使用CDN镜像加速时请在CDN服务商提供的空间内创建AkinaCDN文件夹,然后将主题目录的css、fonts、images、js文件夹及其下文件完整上传。最后在后台模板设置按提示填写域名即可。提示:劣质CDN甚至会拖慢网站的速度,CDN付费用户注意,该操作会让你的钱包遭受不可逆的降维打击。使用技巧在文章编辑里添加自定义字段 img 后面跟图片链接。可自定义页面(除了归档)的顶部图片,默认随机使用Akina\images\postbg下图片。在文章编辑里添加自定义字段 dt 后面不填。可开启动态式文章展示样式。使用动态样式时,文章首页不会看见标题,默认显示文章的前70个字符,可使用<!--more-->摘要分割线自定义显示内容。文章小火花触发条件:阅读量大于等于1000。有些独立页面如果不想让它在导航栏显示,增加一个自定义字段navbar并把字段值改为hide即可
2020年03月09日
3,243 阅读
2 评论
0 点赞
1
...
14
15
16
...
19