网站开发
钚该钚想
这个作者很懒,什么都没留下…
展开
-
PHP二维数组取差集
二维数组取差集 和 数组下标从0开始需求:获取可以使用的坐标 // $arr1:所有坐标 $arr2:不能使用的坐标错误操作: array_diff()使用 array_diff() 获取差集,返回空数组。这个函数只能用于一维数组,不能用于二维数组。正确操作$arr3 = array_filter($arr1, function($v) use ($arr2) { return ! in_array($v, $arr2);});结果集的数组下标从0开始上面的方法获取到数组的差集,原创 2020-11-03 11:58:23 · 868 阅读 · 0 评论 -
前端(JS)与后端(PHP) 通过 RSA 实现加解密
在项目开发过程中,为了安全起见,通常不能以明文形式传递敏感信息,容易被截获,所以引入RSA。1. 生成公钥和私钥在终端(基于 Unix 的操作系统)中输入以下内容。生成私钥openssl genrsa -out rsa_1024_priv.pem 1024通过执行以下命令获取公钥openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem可以使用 cat 命令来查看cat rsa_1024_priv.pem原创 2020-06-16 10:37:50 · 1070 阅读 · 0 评论 -
开发中遇到的越权问题
越权问题:描述:在使用 api 请求订单详情接口时,一般我们是传递订单id 来获取该订单的内容。但是会存在一个问题:当用户手动去变更订单id 参数来请求接口数据时,会获取到不属于他的数据,这就产生了越权。解决办法: 根据订单id 查询到对应的user_id 对当前登录用户的id 和查询到的user_id 进行一致性判断,如果不一致,则返回操作越权。示例代码:public function orderAuth($order_id){ $userInfo = new User();原创 2020-05-29 18:14:40 · 517 阅读 · 0 评论 -
并发情况下产品超卖
在并发时减库存不能简单地通过update(['stock' => stock - $amount])来操作,在高并发的情况下会有问题。$amount = $data['amount '];update product set stock = stock - $amount where id = $id and stock >= $amount这样可以保证不会出现执行之后 stock 值为负数的情况,也就避免了超卖的问题。根据返回的受影响行数来判断是否执行成功。...原创 2020-05-27 16:05:42 · 154 阅读 · 0 评论 -
记录一次 laravel 项目队列拥堵的问题
项目的队列使用database 作为队列驱动,在任务入队之后发现并未生效。所以对问题进行排查。首先查看 failed_jobs 表,发现并没有失败的任务生成记录,然后查看jobs 表,发现确实已经入了 jobs 表的记录。查看项目日志,如下Numeric value out of range: 1264 Out of range value for column 'attempts'...原创 2020-04-02 15:03:49 · 1196 阅读 · 0 评论 -
七牛云 时间戳防盗链
基于时间戳的防盗链是通过对时间有关的字符串进行签名,将时间、签名通过一定的方式传递给 CDN 服务器作为判定依据,CDN 边缘节点根据约定的算法判断来访URL是否有访问权限。通过,执行下一步;不通过,响应 HTTP status code 403。签名参数 T:URL 过期时间。按 unix_time 的 16进制小写形式表示。 如2015-08-01 00:00:00 –>...原创 2020-04-01 10:35:25 · 631 阅读 · 0 评论 -
Nginx 查看接口请求内容
遇到一个接口报错的问题,需要查看接口的参数。方法:1. cat 命令打开NGINX 的配置文件,找到成功日志 access.log 的位置。2.打开日志文件,因为日志文件较大,所以尽量不要直接使用vim 或 cat 命令,可以搭配grep来查看:如:接口名为:payLinetail -f access.log | grep "payLine"结果入下:- [...原创 2020-03-26 18:23:30 · 4612 阅读 · 0 评论 -
Mac iTerm ssh 连接服务器
mac 的iTerm 终端连接服务器命令ssh root@106.15.XXX.XXX-p 22ssh 用户名@ip地址 -p 端口号回车输入密码,即可登陆到服务器。如果不想每次都输入密码的话,可以:免密登陆接下来玩一下高级一点的,创建一个shell 脚本,把登陆服务器的代码写在脚本里,每次执行该脚本就可以。1. 创建文件cd ~touch connectS...原创 2020-03-08 16:50:45 · 277 阅读 · 0 评论 -
guzzle 使用 json 作为主体请求接口
在使用第三方插件 Guzzle 请求微信素材管理接口:接口说明http请求方式: POSThttps://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN#参数{ "type":TYPE, "offset":OFFSET, "count":COUNT...原创 2019-10-31 15:34:59 · 2215 阅读 · 1 评论 -
Laravel orWhere条件
场景描述需要根据三个条件去查询结果集,三个条件的关系是A and (B or C),B条件和C条件有交集,需要取出他两的并集。如果用户登录(UID存在),条件为A and (B or C),用户未登录,查询条件为:A and B错误代码1$uid = $params['uid']??0;$comment = DB::table('users')->where('A', '=', ...原创 2019-10-16 17:38:06 · 525 阅读 · 0 评论 -
Laravel 批量更新
Laravel 简单的批量更新数据需求:将order 表的 status 字段更新为2,条件是 id 在 arr 数组中的行。$orderId = [1,2,4,6,8];\DB::table('order')->whereIn('id', $orderId)->update(['status' => 2]);完成简单的数据批量更新。...原创 2019-10-11 14:38:02 · 147 阅读 · 0 评论 -
Web安全笔记
Web安全笔记SQL注入说明:将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令防范:对输入字符进行严格验证,可以用正则表达式等。尽量不要使用原始错误信息输出,可以自己对原始错误信息进行包装。不要全部使用管理员权限连接,应为每个应用设置独立的权限。验证码说明:为了防止批量提交达到试错的目的而产生防范 :加入...原创 2019-02-21 16:12:18 · 171 阅读 · 0 评论 -
php数据库文件导出代码
$servername = "127.0.0.1";$username = "root";$password = "********";$dbname = "data";$pice = 5000;$start = 0;$fileName = 'text.csv';setLogInfo("脚本开始执行", 'export_csv_file');while(true){ ...原创 2019-02-25 09:56:04 · 612 阅读 · 0 评论 -
laravel中 URL 不做 CSRF 安全校验的两种方法
任何时候在 Laravel 应用中定义 HTML 表单,都需要在表单中引入 CSRF 令牌字段,这样 CSRF 保护中间件才能够对请求进行验证。要想生成包含 CSRF 令牌的隐藏输入字段,可以使用辅助函数csrf_field:如:<form method="POST" action="/profile"> {{ csrf_field() }} ...<...原创 2019-04-22 15:49:04 · 706 阅读 · 0 评论 -
欢常见的Web安全方面问题
Web1. SQL注入说明:将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令防范:对输入字符进行严格验证,可以用正则表达式等。尽量不要使用原始错误信息输出,可以自己对原始错误信息进行包装。不要全部使用管理员权限连接,应为每个应用设置独立的权限。验证码说明:为了防止批量提交达到试错的目的而产生防范 :加入杂色,...原创 2019-05-20 16:42:08 · 103 阅读 · 0 评论 -
laravel 中数据验证
laravel 中数据验证使用 Validator::make(data,rules,[messages],[attribute]) 函数来实现:$param = [ 'id' => intval($request->post('id', 0)), 'title' => $request->post('title', ''),];$rule = [ 'id' ...原创 2019-09-24 14:32:53 · 472 阅读 · 0 评论 -
laravel 中使用七牛云
laravel 中使用七牛云:安装配置在laravel中使用composer 安装:composer require zgldh/qiniu-laravel-storage然后在config/app.php中注册服务提供者:zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class在config/filesystems.php里...原创 2019-09-25 15:38:27 · 1098 阅读 · 0 评论 -
请求接口时出现 Status (blocked:other)
问题:请求接口时出现 Status (blocked:other)原因浏览器安装了Adblock 广告拦截插件,并且接口名称含有 %ad% 名称。解决方式关闭Adblock 广告拦截插件接口名称中不要含有%ad% 的名称...原创 2019-09-27 17:40:20 · 1330 阅读 · 0 评论