文件的md5和sha1值的用处
熟悉公众号的小伙伴,应该知道里面后台素材库这个板块的内容。而我们在网站后台的开发时,也会用到资源库的概念。
资源库,是指把所有用户上传的文件记录起来的地方,比如说文件类型,大小,存放位置等等;
当我们需要避免用户重复上传,或者实现秒传,检验文件完整性等场景的时候,就要用到能够标识出这个文件的唯一标识,这个时候,就可以用到文件的md5值,或者哈希值。每个文件的每个状态都对应特定的值,我们可以通过比对这个值,来实现上述的3个场景
【场景】避免重复上传
同一个文件,用户可能在不同的场景下上传多次,如果我们不对此进行相应的检验、去重,服务器的文件数量会越来越多,同时一些无效的文件也会保存在服务器上,造成空间浪费
实现秒传
秒传,实际上是和第一个场景提到的问题延伸。当用户不同场景上传同一个文件时,我们可以先检验资源库里面是否有这个文件,有则直接返回相对的资源路径,减少客户端等待的时间
校验文件完整性
在某些场景下,比如文档状态记录时,可能会需要比对当前文件是否无改动,这时候,就可以采用检验前后文件加密值的方式来进行区分文件是否未被修改
【实现思路】1、建立资源表,用于保存文件相关信息,如文件类型 ...
jQuery全选和反选CheckBox
近日在项目维护中,前端页面涉及到了复选框,于是记录一下如何使用 jQuery 实现 CheckBox 的全选和反选。
1、checkBox<input type='checkbox' onclick='checkAll(this)' /><input type='checkbox' name='expense_cate' value='' />;
2、javascript 部分//全选和反选function checkAll(obj) { let check_status = obj.checked; $('[name=expense_cate]:checkbox').each(function(){ this.checked = check_status; });}//选中的复选框值function get_expense_cate() { var ...
什么是sitemap?究竟有什么作用呢?
sitemap即网站地图,存储网站所有网址url的索引,用于通知搜索引擎网站上有哪些可供抓取的网页。
【sitemap.xml】即网站地图,存储网站所有网址url的索引,用于通知搜索引擎网站上有哪些可供抓取的网页。
一般放置在网站根目录,通过域名 + sitemap.xml的形式访问,如http://www.shayvmo.top/sitemap.xml
常见的sitemap文件格式有xml、txt,一般使用xml即可,百度、谷歌等主流搜索引擎都是使用xml文件
网站地图的主要作用是告诉搜索引擎网站可供访问的url链接,以及最近更新网页信息,便于搜索引擎抓取收录,因此对于网站的排名具有积极意义。
【sitemap 生成】参考以下链接:
http://www.sitemap-xml.org/
【robots.txt】搜索引擎使用spider程序自动范文互联网上的网页并获取网页信息。
robots.txt 这个文件用于指定spider在您网站上的抓取范围,可以 定义哪些目录抓取,哪些目录禁止抓取。
【用法】User-agent:定义进制搜索引擎名字,比如说:百度(Baiduspider)、 ...
为自己的网站添加百度统计
网站上线后,往往需要统计网站的访问情况,SEO效果等等。
我们可以通过百度统计,来查看我们的网站在百度引擎的SEO情况。
那如何网站怎样才能引入百度统计呢?
【步骤】1、首先进入百度统计网站,注册或登录账号。
https://tongji.baidu.com/web/welcome/login
2、添加待统计的网站,安装统计代码到网站中需要统计的页面
3、一般情况下,20分钟后自动生效,也可以根据提示,进行手动代码检查,检测是否安装成功。
【注意】如果需要把统计数据公开,则可以通过以下方式进行开放。
公众号页面开发添加调试器
开发公众号页面时,面对真机页面测试,有时候需要查看页面加载情况,这里可以加载一个调试器,进行调试处理。
首先引入js文件,https://cdn.jsdelivr.net/npm/vconsole@3.3.4/dist/vconsole.min.js
然后在脚本中实例化类
<script src="https://cdn.jsdelivr.net/npm/vconsole@3.3.4/dist/vconsole.min.js"><script>new VConsole();</script>
实际效果
2019.3.2 版本 PHPStorm 最新激活方式 (2020年亲测)
【严肃声明】1、本教程补丁、激活码来源于网络,如有侵权请联系作者删除!2、本项目只做个人学习研究之用,不得用于商业用途!3、若资金允许,请点击 链接 购买正版,谢谢合作!
【激活注意】1、本文适用于PHPstorm 2019.3.2(亲测成功),其他版本待大家测试使用,由于是使用最新 jar 包,相信激活问题不大。
2、修改后配置,重启IDE,输入相应激活码
3、不需要修改 host 文件以及任何配置文件
题外,Windows host 路径:C:\Windows\System32\drivers\etc
【激活步骤】1、正常下载,安装PHPstorm,官方下载渠道:https://www.jetbrains.com/phpstorm/download/
2、下载激活 jar 包
下载完成后,将 jar 包放在任意目录下,路径不得有中文,并记下这个路径,后续配置时需要用到。建议存放妥当。
链接:https://pan.baidu.com/s/1uuVQy8IvJrgFzPg0wSL2yQ提取码:lp50
3、打开 PHPstorm ,首次安装打开时,选择 Evaluate for f ...
PHP 返回一维数组中,有序组合成 N 个元素的数组
最近业务上遇到一个商品捆绑促销的问题,需要计算出一维数组中组合成2个有序不重复的元素组合数组。
于是总结了一下,写了一个可以通用算多一维数组中,组成有序组合数组的函数。
函数方法/** * 返回一维数组中,有序组合成 $count 个元素的数组 * @author Eric * @param $arr 原数组 * @param $collect 组成新数组 * @param int $count 新数组单元素组合个数 * @return array */function array_picker($arr,&$collect,$count=2) { if (empty($arr)) { return $collect; } static $temp_string; for ($i=0; $i < count($arr); $i++) { $temp_string[] = $arr[$i]; if(count($temp_string) < $count) ...
php 遍历数组的几种方式
最近恰好看到了 PHP 循环数组有多种方式,于是便总结一下这几种日常开发中,使用比较频繁的方式。
1、for只支持索引数组,不支持关联数组
$array = ['a','b','c','d'];for ($i=0;$i<count($array);$i++){ echo $array[$i].'-';}
2、foreach索引数组和关联数组都可以
foreach ($array as $key => $value){ echo $value.'-';}
3、while(), list(), each() 结合实质上是指针移动;支持索引数组和关联数组
注意:each() 在7.2以上版本已被弃用,会报 warning 警告错误
while ( list($key,$value)=each($array) ){ echo '|'.$value.' ...
php-excel、phpspreadsheet的封装类
最近项目遇到了经常性使用表格导出,之前使用的是PHPExcel,但是已经不更新了。于是开始使用PHPspreadsheet,并且在空闲时间写了一个封装类。如果有需要,可以在下载使用。遇到BUG问题,可以讨论完善。
1、composer 加载包composer require shayvmo/php-excel
2、github 地址地址:https://github.com/shayvmo/phpExcel
3、部分代码$excel = new \shayvmo\phpExcel([ 'savePath'=>'D:\wamp64\www\phpExcel\Examples',//保存路径 'filename'=>'test_file'.time(), 'properties'=>[ 'Creator'=>'Eric',//文件创建者 'LastModifiedBy& ...
php curl 请求 https 接口时,返回错误码:77
错误情况php CURL 请求一个 https 的接口时,返回一个bool false,打印错误curl_error($ch)信息时没有返回错误内容
查看错误码curl_errno($ch) 是 77 。
根据 curl 错误码显示,77 代表 'CURLE_SSL_CACERT_BADFILE' ,本地 CA 证书有异常。
解决方式1、服务器更新 CA 证书
yum update ca-certificates
2、重启 php-fpm 或重启 APACHE
3、curl 请求中加上忽略证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);