rinald 的文章

计算两个经纬度的距离/偏差米数_计算周边范围经纬度值

**计算两个经纬度的距离/偏差米数_计算周边范围经纬度值_PHP函数笔记** 计算经纬度距离,首先需要了解球面距离计算公示: ```php r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ sin(lat1*pi()/180 )*sin(lat2*pi()/180))r*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+ sin(lat1*pi()/180 )*sin(lat2*pi()/180)) ``` 其中,lat1,lng1是纬度\经度的弧度单位,r为地球半径。...

继续阅读 »

PHP Javabridge使用

##### 一、php如何调取java方法: php调用java的方法有Javabridge,也有rpc。php里调用java平台封装好的jar包里的class类和方法推荐使用php-java-bridge做桥接。 ##### 二、Javabridge工作原理: 通过服务端打开一个java的监听端口,php调用java时,将对应的方法调用转发给java的指定端口,由java执行完成后将结果返回给php。可以简单的理解php在这里扮演的角色是代理转发,把调用的类方法转交给后端java执行,是一种较为典型的代理模式。 ##### 三、使用步骤: **1、**服务端部署Apache/Nginx+PHP+JDK+Tomcat **2、**下载本文附件[Javabridge](https://w...

继续阅读 »

PHP一个数组按另一个数组顺序排序

##### PHP实现将一个数组按另一个数组顺序进行排序,PHP根据一个数组对另一个数组进行排序 ##### 顺序约束数据(20条): ```php $sort_list = array(20) { [0] => int(30702) [1] => int(30373) [2] => int(32110) [3] => int(32207) [4] => int(31923) [5] => int(1497) [6] => int(32003) [7] => int(30397) [8] => int(32086) [9] => int(31920) [10] => int(30795) [11] => int(3192...

继续阅读 »

AdmnIX前端网站后台管理模板框架

**AdmnIX**是一款基于Bootstrap的轻量级、响应式前端后台管理框架,采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,提供诸多可重新组合的UI组件。同时,遵循极简体验、简单灵活、兼容性好、自适应触屏手机的原则,面向所有层次的前后端程序,帮助企业极大的提高工作效率,节省开发成本,提升品牌形象。始于2018年初,为敏捷WEB应用开发和简化企业应用开发而诞生。 ![](https://www.fity.cn/usr/uploads/2019/05/20190520062206_25951.png) ![](https://www.fity.cn/usr/uploads/2019/05/20190520063306_93156.png) ##### 再见,是为了更好的再...

继续阅读 »

nginx防盗链(适用于图片与文件下载)

**配置防盗链初衷是多为节约服务器带宽资源及简单对网站资源进行防盗。** ### 一、普通防盗链 ngx_http_referer_module模块:可根据header中的referer信息屏蔽某些请求对网站或应用的访问,可以起到禁止直接访问网站static files的作用(防盗链或保护文件)。 ``` location ~ ^/img/.*.(gif|jpg|jpeg|png|bmp|swf)$ { #valid_referers none blocked *.www.fity.cn *.test.com server_names ~\.google\. ~\.baidu\.; valid_referers *.www.fity.cn *.xsimple.cn server...

继续阅读 »

http跳转https_设置指定目录不跳转nginx rewrite

今天遇到需求是在访问url网址需要实现部分路径不进行https跳转,之前nginx设置的是对全部http url进行301跳转到https协议,具体实现的nginx rewrite如下: ```c set $is_jump 0; if ( $request_uri ~ ^/post/.* ){ #如果url地址中包含post则不跳转 set $is_jump 1; } if ($is_jump = 0) { return 301 https://$server_name$request_uri; } ```

继续阅读 »

php openssl_encrypt无填充注意点

**php openssl_encrypt OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING无填充加密失败或空白无输出问题:** 在ios/java(Android)加密选择无填充模式如果不足128字节的话,调用方法会自动填充至128字节再进行加密,但php跟java中没有统一的填充标准,所以openssl_encrypt并没有默认填充,openssl_encrypt加密对数据长度有要求(这个与钥模有关),从而导致加密失败,这就需要手动填充。可以使用php函数str_pad函数。

继续阅读 »

PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密

**PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式交互调取早期系统数据,由于早期AES使用的是mcrypt_encrypt函数,但该函数在PHP新版本中已逐渐废弃,PHP新版本中使用openssl_encrypt取代mcrypt_encrypt。 于是重新基于PHP7编写一个新类,由于需兼容现有早期系统的AES加解密类(并存填充与无填充),所以该类中增添部分判断。在规划项目、技术及开发时,未来往事推荐你尽可能规范化、标准化、统一化,以尽可能规避持续的维护投入,提升有效开发时间。 **AES对等加密解密类文件:CBC模式 - PHP** `...

继续阅读 »

mysql多条件模糊查询搜索结果优先按最佳匹配度排序

首先,我们需了解下mysql的locate函数: LOCATE(substr,str):返回字符串str第一次出现的子串substr的位置; LOCATE(substr,str,pos):返回第一次出现在字符串str的子串substr的位置,从位置pos开始。substr不在str中,则返回0。 SQL示例 - 搜索结果按关键词'充电'匹配度优先排序: ```sql SELECT id, title, title_spell, LOCATE("贡院", housename) AS sort_index FROM `xa_house` WHERE `status` = 1 AND ( ( `title` LIKE '%未来%' OR `title`...

继续阅读 »

开放API接口安全设计

早期文章:[开放API接口设计简要思路](https://www.fity.cn/post/657.html "开放API接口设计简要思路") 最后更新:2019-06-21 20:05:39 星期五 #### 开放API接口安全校验的背景: **在未进行安全处理的开放API接口存在诸多的风险问题,如以下三种常见场景:** **1、**场景一 A公司开发的开放API未对接口进行安全控制,有黑客通过爬虫程序调用开放API查询客户信息的接口,由于没有安全验证,A公司的客户数据通过客户信息查询API流出,竞争公司拥有了这批客户数据,对A公司造成损失。 **2、**场景二 A公司开发的开放API未对接口进行防篡改控制,有客户购买价值1万元的产品,现有黑客通过技术手段,对客户提交的表单进行篡改...

继续阅读 »

按最接近当前时间排序 mysql sql查询

**sql按当前时间较近的进行排序 且 大于当前时间的优先排序** ```php 假设数据表: id domain visit_time 1 blog.fity.cn 1570550400 #2019/10/9 2 fity.cn 1567958400 #2019/9/9 3 www.fity.cn 1562601600 #2019/7/9 ``` ```php 假设今天是2019/8/6,希望排序顺序: id domain visit_time 2 fity.cn 1567958400 #2019/9/9 1 blog.fity.cn 1570550400 #2019/10/9 3 www.fity.cn 1562601600 #2019/7/9 ...

继续阅读 »

记一次阿里云ECS DDOS攻击。。。

早上上班还不到一小时 发现生产环境主机突然无法访问且ping不同,初步考虑是否主机白名单被篡改,经查看阿里云相关统计报表判断为DDOS攻击,经过持续半小时左右时间终恢复,本文仅用于记录不做为解决方案。 ECS主机默认情况在遭受攻击(例如DDOS)时流量超过本机房设定的黑洞阈值时,阿里云会屏蔽ECS主机的外网访问。当服务器进入黑洞一段时间后,如果系统监控到攻击流量停止,黑洞会自动解封。 **遭受攻击时网络拥塞截图如下:** ![](https://www.fity.cn/usr/uploads/2017/08/20170804063126_30779.png) *很多时候遭受DDoS攻击事件感觉不是你能做什么,而是机房决定了其实你什么都做不了,内心是深深的绝望@_@。。。* **临时解...

继续阅读 »

tp_thinkphp_php检测上传图片中是否含脚本

#### 本文范例中是基于检测图片十六进制代码中是否包含``、`` 、``等脚本实现检测上传文件是否非法及包含木马脚本。 ```php class Upload { private static $image = null; private static $status = 0; private static $suffix = null; private static $imageType = array('.jpg', '.bmp','.gif','.png');  //允许的图片类型 private static $message = array(  //文件上传错误信息 '0' => '没有错误发生...

继续阅读 »

2台机器之间的端口转发iptables

##### 2台机器之间的端口转发iptables方式实现,场景: 两台机器,A机器能正常访问,B机器不能直接被访问,所以希望用A机器进行端口转发间接访问B机器,大致思路: 路由器 ---- 指定端口nat到 ------- A机器---------iptables nat 到 ------------B机器的端口 >iptables -t nat -A PREROUTING -i em3 -p tcp --dport 5080 -j DNAT --to 192.168.0.230:80 (后面这个ip是B机器的ip加端口,前面的em3是A机器的数据经过的网卡 5080是访问A机器的5080端口就转发到后面机器来) >iptables -t nat -A POSTROUTING ...

继续阅读 »