首页
📷在线壁纸
🎬娱乐天地
🔖友情链接
更多
📝留言板
Search
1
【javascript】JS-向当前url追加参数
2,343 阅读
2
【PHP】生成随机昵称
2,200 阅读
3
【PHP】判断一个字符串是否属于序列化后的数据
2,022 阅读
4
【css】html+css给文章页,做阅读全文
1,973 阅读
5
【PHP】 设计模式(23种)
1,907 阅读
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍡 AI
🍭文艺范
🍏mac
登录
Search
标签搜索
php
typecho
代码注释
redis
mysql
go
golang
nginx
thinkphp
gin
linux
curl
html
mamp
docker
算法
短网址
构造函数
webhook
代码片段
依然范儿特西
累计撰写
141
篇文章
累计收到
1
条评论
首页
栏目
📂默认分类
💓typecho
🏳️🌈代码改变世界
🍇 mysql
🍈 Winform
🍓 golang
🍉 设计模式
🥝 PHP
🍎 python
🍊 nginx
🍋 网络安全
🍍 javascript
🫑 database
🍡 AI
🍭文艺范
🍏mac
页面
📷在线壁纸
🎬娱乐天地
🔖友情链接
📝留言板
搜索到
141
篇与
的结果
2021-06-24
【PHP】二维数组根据多个字段进行排序
函数 array_multisort()array_multisort() 函数返回一个排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。函数 array_column()array_column()从记录集中取出 last_name 列:代码<?php $data = [ ['name'=>'laofan1','age'=>18,'space'=>3], ['name'=>'laofan2','age'=>19,'space'=>1], ['name'=>'laofan3','age'=>19,'space'=>2], ['name'=>'laofan4','age'=>17,'space'=>4], ]; array_multisort(array_column($data, 'age'),SORT_DESC,array_column($data, 'space'),SORT_DESC, $data); print_r($data); ?> 结果Array ( [0] => Array ( [name] => laofan3 [age] => 19 [space] => 2 ) [1] => Array ( [name] => laofan2 [age] => 19 [space] => 1 ) [2] => Array ( [name] => laofan1 [age] => 18 [space] => 3 ) [3] => Array ( [name] => laofan4 [age] => 17 [space] => 4 ) )
2021年06月24日
130 阅读
0 评论
0 点赞
2021-06-24
【PHP】隐藏真实的视频播放地址
前言在做视频站,往往不想让用户看到视频真实地址,于是就有了这个代码代码示例html 代码<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>videojs</title> </head> <body> <video class="video-js vjs-big-play-centered" controls data-setup="{}" width="960" height="400" preload="auto" > <source src="https://richerdyoung.com/test.php" type="video/mp4"></source> </video> <link href="//cdn.bootcss.com/video.js/7.0.0-alpha.1/alt/video-js-cdn.css" rel="stylesheet"> <script src="//cdn.bootcss.com/video.js/7.0.0-alpha.1/video.min.js"></script> </body> </html> test.php<?php ini_set('memory_limit', '1024M'); //修改脚本的最大运行内存 set_time_limit(600); //设置超时限制为 10分钟 //视频地址可以换成你的来测试 $play_url = 'https://richerdyoung.com/test.mp4'; //输出视频流 outPutStream($real_paly_url);die(); //输出视频流 function outPutStream($videoUrl) { if(!$videoUrl){ header('HTTP/1.1 500 Internal Server Error'); echo "Error: Video cannot be played !"; exit(); } //获取视频大小 $header_array = get_headers($videoUrl, true); $sizeTemp = $header_array['Content-Length']; if (is_array($sizeTemp)) { $size = $sizeTemp[count($sizeTemp) - 1]; } else { $size = $sizeTemp; } //初始参数 $start = 0; $end = $size - 1; $length = $size; $buffer = 1024 * 1024 * 10; // 输出的流大小 10m //计算 Range $ranges_arr = array(); if (isset($_SERVER['HTTP_RANGE'])) { if (!preg_match('/^bytes=\d*-\d*(,\d*-\d*)*$/i', $_SERVER['HTTP_RANGE'])) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); } $ranges = explode(',', substr($_SERVER['HTTP_RANGE'], 6)); foreach ($ranges as $range) { $parts = explode('-', $range); $ranges_arr[] = array($parts[0], $parts[1]); } $ranges = $ranges_arr[0]; $start = (int)$ranges[0]; if ($ranges[1] != '') { $end = (int)$ranges[1]; } $length = min($end - $start + 1, $buffer); $end = $start + $length - 1; }else{ // php 文件第一次浏览器请求不会携带 RANGE 为了提升加载速度 默认请求 1 个字节的数据 $start=0; $end=1; $length=2; } //添加 Range 分段请求 $header = array("Range:bytes={$start}-{$end}"); #发起请求 $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, $videoUrl); curl_setopt($ch2, CURLOPT_TIMEOUT, 60); curl_setopt($ch2, CURLOPT_HTTPHEADER, $header); //设置读取的缓存区大小 curl_setopt($ch2, CURLOPT_BUFFERSIZE, $buffer); // 关闭安全认证 curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false); //追踪返回302状态码,继续抓取 curl_setopt($ch2, CURLOPT_HEADER, false); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch2, CURLOPT_CONNECTTIMEOUT, 60); curl_setopt($ch2, CURLOPT_NOBODY, false); curl_setopt($ch2, CURLOPT_REFERER, $videoUrl); //模拟来路 curl_setopt($ch2, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.44"); $content = curl_exec($ch2); curl_close($ch2); #设置响应头 header('HTTP/1.1 206 PARTIAL CONTENT'); header("Accept-Ranges: bytes"); header("Connection: keep-alive"); header("Content-Type: video/mp4"); header("Access-Control-Allow-Origin: *"); //为了兼容 ios UC这类浏览器 这里加个判断 UC的 Content-Range 是 起始值-总大小减一 if($end!=1){ $end=$size-1; } header("Content-Range: bytes {$start}-{$end}/{$size}"); //设置流的实际大小 header("Content-Length: ".strlen($content)); //清空缓存区 ob_clean(); //输出视频流 echo $content; //销毁内存 unset($content); } function PutMovie($file) { ini_set('memory_limit','512M'); header("Content-type: video/mp4"); header("Accept-Ranges: bytes"); ob_start(); // ------ 开启缓冲区 $size = filesize($file); if(isset($_SERVER['HTTP_RANGE'])){ header("HTTP/1.1 206 Partial Content"); list($name, $range) = explode("=", $_SERVER['HTTP_RANGE']); list($begin, $end) =explode("-", $range); if($end == 0) $end = $size - 1; }else { $begin = 0; $end = $size - 1; } header("Content-Length: " . ($end - $begin + 1)); header("Content-Disposition: filename=".basename($file)); header("Content-Range: bytes ".$begin."-".$end."/".$size); try { $fp = fopen($file, 'r'); } catch (\Exception $e) { echo $e->getTraceAsString();exit; } fseek($fp, $begin); $contents = ''; while(!feof($fp)) { $p = min(1024, $end - $begin + 1); //$begin += $p; $contents .= fread($fp, $p); //echo fread($fp, $p); } //$contents = ltrim($contents, "\XEF\XBB\XBF"); ob_end_clean(); // ------ 清除缓冲区 ob_clean(); //$contents = substr($contents, 3); fclose($fp); exit($contents); } ?> 亲测可用! ,有问题可联系我一起讨论
2021年06月24日
259 阅读
0 评论
3 点赞
2021-06-22
【PHP】zfaka部署时候关闭pathinfo
开源项目地址:https://github.com/zlkbdotnet/zfaka部署的时候,会提示重定向次数过多,解决办法:1 PHP 配置修改,关闭 cgi.fix_pathinfo2 注释掉 include pathinfo.conf 文件位置: /www/server/nginx/conf/enable-php-72.conf location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi-72.sock; fastcgi_index index.php; include fastcgi.conf; # include pathinfo.conf; } 重启PHP 即可
2021年06月22日
155 阅读
0 评论
0 点赞
2021-06-17
【mysql】让数据库支持emoji表情
此处我们以typecho的文章表为例依次执行下列sqlALTER DATABASE typecho_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE typecho_blog.typecho_contents CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;查看结果SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';显示如下,即为成功!Variable_name Value character_set_client utf8mb4 character_set_connection utf8mb4 character_set_database utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_server utf8mb4 character_set_system utf8 character_sets_dir /www/server/mysql/share/charsets/ collation_connection utf8mb4_general_ci collation_database utf8mb4_unicode_ci collation_server utf8mb4_general_ci
2021年06月17日
192 阅读
0 评论
0 点赞
2021-06-10
【Typecho】Typecho 防黑安全加固
删除安装文件成功安装后删除 install.php 文件、install/ 文件夹。修改后台地址把 admin 修改为黑客猜不到的名字,例如 pipixia,防止黑客穷举密码。修改`admin`文件夹名称修改 admin 文件夹名称为你喜欢的名称,例如 pipixia修改配置文件以适配修改后的`admin`路径修改 config.inc.php修改为以下代码,我就当修改为 pipixia 了。/** 后台路径(相对路径) */ define('__TYPECHO_ADMIN_DIR__', '/pipixia/');好了。现在你可以访问你的域名/pipixia/ 了。这就是你的新的后台地址,原来的你的域名/admin/ 已经不能访问了。屏蔽 usr、var 目录下 php 文件的访问屏蔽 usr、var 目录下 php 文件的访问可以阻止黑客访问到他上传的 php木马。我们利用 Rewrite 伪静态机制来做。我这里以 Apache 服务器为例,大部分虚拟主机都是 Apache。LiteSpeed Web Server 也使用的是 Apache 的规则。我们同时屏蔽 config.inc.php 和.htaccess 的访问。屏蔽原理就是把要屏蔽的请求重定向到首页文件,首页文件会当成文章名来解析,没有同名文章就会返回 404 未找到。所以就算黑客上传了木马也只会得到 404 未找到的响应。文件名:.htaccess<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1] RewriteRule (var|usr)(.+ph*)$ index.php [E=PATH_INFO:$1] RewriteRule (config.inc.php|.htaccess)$ index.php [L,E=PATH_INFO:$1] </IfModule>新建.htaccess 文件添加以上内容,上传到你 typecho 博客的根目录就可以了。Nginx if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1; } rewrite /(var|usr)(.+ph*)$ /index.php; rewrite /(config.inc.php|.htaccess)$ /index.php last;
2021年06月10日
285 阅读
3 评论
2 点赞
2021-06-09
【redis】PHP Redis扩展无法加载的问题解决方法
问题安装命令pecl install redis安装之后,出现报错:PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib64/php/modules/redis.so (/usr/lib64/php/modules/redis.so: undefined symbol: php_json_decode_ex), /usr/lib64/php/modules/redis.so.so (/usr/ lib64/php/modules/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 解决办法1 配置 php.ini在php.ini中一定要配置extension_dir和extension,如:extension_dir = "/usr/lib64/php/modules/" extension=redis.so2.配置redis.ini# 在/etc/php.d/目录中创建redis.ini文件 vim redis.ini # 文件中添加: extension=redis.so3.重启php-fpm即可systemctl restart php-fpm
2021年06月09日
319 阅读
0 评论
0 点赞
2021-06-08
【Typecho】Typecho 添加是否被百度收录
我们是否经常在一些网友的博客内容页看到 "百度已收录" 等字样?其实这样加上去有多少效果也没有多少,但是对于有些个人来说他喜欢的,或者可以在考核编辑的时候可以看看他们的文案是否达到有效的收录率。如果你有使用 Typecho 程序,可以通过下面的方法实现。第一、添加脚本/** * 提示文章百度是否收录 * */ function baidu_record() { $url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if(checkBaidu($url)==1){ echo "百度已收录"; }else{ echo "<a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录!\" target=\"_blank\" href=\"http://zhanzhang.baidu.com/sitesubmit/index?sitename=$url\">百度未收录</a>";} } function checkBaidu($url) { $url = 'http://www.baidu.com/s?wd=' . urlencode($url); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $rs = curl_exec($curl); curl_close($curl); if (!strpos($rs, '没有找到')) { //没有找到说明已被百度收录 return 1; } else { return -1; } } 将脚本添加到当前 Typecho 主题中的 Functions.php 文件中。第二、调出效果<?php echo baidu_record() ?>在合适的位置调出即可,如果我们有特定样式可以用一个 span 标签包含处理。
2021年06月08日
148 阅读
0 评论
2 点赞
2021-06-08
【Typecho】 Typecho去掉 index.php
Typecho 后台设置永久链接后,会在域名后加上 index.php,很多人都接受不了。例如如下网址: https://richerdyoung.com/index.php/p/75.html 但我们希望最终的形式是这样: https://richerdyoung.com/p/75.html 那么我们如何做到这样的效果?1. 配置服务器的 rewrite 规则nginx server { listen 80; server_name richerdyoung.com; root /home/laofan/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/richerdyoung.com.log combined; }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> 2. 后台配置 typecho 伪静态在 typecho 后台,开启伪静态,并选择你喜好的 url形式:网站设置-》永久链接,选择启用地址重写功能
2021年06月08日
196 阅读
0 评论
0 点赞
2021-06-08
【Typecho 】typecho 自带版权说明代码
<script> document.body.addEventListener('copy', function (e) { if (window.getSelection().toString() && window.getSelection().toString().length > 10) { setClipboardText(e); } }); function setClipboardText(event) { var clipboardData = event.clipboardData || window.clipboardData; if (clipboardData) { event.preventDefault(); var htmlData = '' + '著作权归作者所有。<br>' + '商业转载请联系作者获得授权,非商业转载请注明出处。<br>' + '作者:<?php $this->author() ?><br>' + '链接:' + window.location.href + '<br>' + '来源:<?php $this->options->siteUrl(); ?><br><br>' + window.getSelection().toString(); var textData = '' + '著作权归作者所有。\n' + '商业转载请联系作者获得授权,非商业转载请注明出处。\n' + '作者:<?php $this->author() ?>\n' + '链接:' + window.location.href + '\n' + '来源:<?php $this->options->siteUrl(); ?>\n\n' + window.getSelection().toString(); clipboardData.setData('text/html', htmlData); clipboardData.setData('text/plain',textData); } } </script> 效果著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:依然范儿特西 链接:https://richerdyoung.com/p/74.html 来源:https://richerdyoung.com/
2021年06月08日
180 阅读
0 评论
1 点赞
2021-06-07
【Linux】一文详解scp命令
scp加密的方式在本地主机和远程主机之间复制文件补充说明scp命令 用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。语法scp(选项)(参数)选项-1:使用ssh协议版本1; -2:使用ssh协议版本2; -4:使用ipv4; -6:使用ipv6; -B:以批处理模式运行; -C:使用压缩; -F:指定ssh配置文件; -i:identity_file 从指定文件中读取传输时使用的密钥文件(例如亚马逊云pem),此参数直接传递给ssh; -l:指定宽带限制; -o:指定使用的ssh选项; -P:指定远程主机的端口号; -p:保留文件的最后修改时间,最后访问时间和权限模式; -q:不显示复制进度; -r:以递归方式复制。 参数源文件:指定要复制的源文件。目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。实例从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。从远程机器复制文件到本地目录scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/从10.10.10.10机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中。从亚马逊云复制OpenVPN到本地目录scp -i amazon.pem ubuntu@10.10.10.10:/usr/local/openvpn_as/etc/exe/openvpn-connect-2.1.3.110.dmg openvpn-connect-2.1.3.110.dmg从10.10.10.10机器上下载openvpn安装文件到本地当前目录来。从远程机器复制到本地scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/从10.10.10.10机器上的/opt/soft/中下载mongodb目录到本地的/opt/soft/目录来。上传本地文件到远程机器指定目录scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest # 指定端口 2222 scp -rp -P 2222 /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest复制本地/opt/soft/目录下的文件nginx-0.5.38.tar.gz到远程机器10.10.10.10的opt/soft/scptest目录。上传本地目录到远程机器指定目录scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest上传本地目录/opt/soft/mongodb到远程机器10.10.10.10上/opt/soft/scptest的目录中去。
2021年06月07日
169 阅读
0 评论
1 点赞
1
...
8
9
10
...
15