Peak Xin

小峰的博客


  • 首页

  • 标签

  • 分类

  • 归档

  • 优秀资源

  • 搜索

浏览器 Cookie 的使用

发表于 2022-04-12 | 分类于 前端开发 , JavaScript |
字数统计: 323 | 阅读时长 ≈ 1

Cookie介绍

主要用于存储访问过的网站数据,把浏览器的信息存储到本地电脑中,实现客户端和服务器端的通讯。

Cookie特点

  • 以文本形式保存(.txt)
  • Cookie存储信息不安全(不能存放重要的信息)
  • Cookie中有域(domain)和路径的概念,浏览器是一个比较安全的环境,所以不同的域之间不能直接访问(js的同源策略限制)
阅读全文 »

Vue 中的代理proxy配置

发表于 2022-04-08 | 分类于 前端框架 , Vue |
字数统计: 802 | 阅读时长 ≈ 3

我们本地开发调试一般是 npm run serve 或 yarn serve,然后打开 localhost:8080(本机的IP),此时如果调用后端接口,可能会产生跨域,那如何解决呢?

解决跨域的方案

  1. jsonp
    • 只支持GET请求,JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
  2. cors
    • CORS支持所有类型的HTTP请求,是跨域HTTP请求的根本解决方案
  3. Node中间件代理(两次跨域)
    • 通过同源策略对服务器不加限制。
  4. Nginx反向代理
    • 通过同源策略对服务器不加限制。

日常工作中,生产环境用得比较多的跨域方案是cors和nginx反向代理。
本地项目中调试用的最多的就是 node 代理,当然像 nginx、charles(抓包工具)做代理也可以,只要你会配置。

阅读全文 »

Vue Antd Admin 跨域代理配置

发表于 2022-04-07 | 分类于 前端框架 , Vue |
字数统计: 84 | 阅读时长 ≈ 1
  1. 修改文件 src\services\api.js
1
2
3
4
//跨域代理前缀
const API_PROXY_PREFIX='/adminapi'
const BASE_URL = process.env.NODE_ENV === 'production' ? process.env.VUE_APP_API_BASE_URL : API_PROXY_PREFIX
//const BASE_URL = process.env.VUE_APP_API_BASE_URL
  1. 修改文件vue.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module.exports = {
devServer: {
proxy: {
'/adminapi': { //此处要与 /services/api.js 中的 API_PROXY_PREFIX 值保持一致
target: process.env.VUE_APP_API_BASE_URL,
changeOrigin: true,
pathRewrite: {
'^/adminapi': '/'
}
}
}
},
......
}

然后重启yarn serve

Yii2模型的关联模型使用

发表于 2022-04-06 | 分类于 PHP框架 , Yii |
字数统计: 971 | 阅读时长 ≈ 3

Active Record 可以将相关数据集中进来, 使其可以通过原始数据轻松访问。 例如,客户数据与订单数据相关 因为一个客户可能已经存放了一个或多个订单。这种关系通过适当的声明, 你可以使用 $customer->orders 表达式访问客户的订单信息 这表达式将返回包含 Order Active Record 实例的客户订单信息的数组。

声明关联关系

你必须先在 Active Record 类中定义关联关系,才能使用 Active Record 的关联数据。 简单地为每个需要定义关联关系声明一个 关联方法 即可,如下所示,

阅读全文 »

MySQL5.7.26错误问题 mysqld.exe: Error while setting value 'STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION' to 'sql_mode'

发表于 2022-03-28 | 分类于 数据库 , MySQL |
字数统计: 97 | 阅读时长 ≈ 1

这样的问题出现,是因为MySQL的配置文件my.ini中sql_mode的值,逗号后面加上了空格导致的无法启动,需要手动删除空格就可以了。

my.ini原来部分代码:

1
2
3
4
5
6
7
tmp_table_size=64M
wait_timeout=120
sql_mode=STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

[client]
port=3306
default-character-set=utf8

my.ini修改后代码:

1
2
3
4
5
6
7
tmp_table_size=64M
wait_timeout=120
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[client]
port=3306
default-character-set=utf8

重启即可

JS 倒计时定时器

发表于 2022-03-04 | 分类于 前端开发 , JavaScript |
字数统计: 208 | 阅读时长 ≈ 1

JS 60秒倒计时代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>倒计时定时器</title>
</head>

<style>
.main {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}

#timer {
width: 100px;
}
</style>

<body>
<div class="main">
<div id="timer"></div>
<a href="javascript:;" id="startBtn">开始</a>
</div>
<script>
let startBtn = document.getElementById('startBtn');
let timerNode = document.getElementById('timer');
let senond = 0
function timer() {
startBtn.style = "display:none";
senond = 60;
timerNode.innerText = senond;
let promise = new Promise((resolve, reject) => {
let setTimer = setInterval(() => {

senond--;
timerNode.innerText = senond;
console.log(senond);

if (senond <= 0) {
resolve(setTimer);
startBtn.style = "display:block";
}
}, 1000);
});
promise.then((setTimer) => {
clearInterval(setTimer);
});
}


startBtn.addEventListener('click', timer, false);
</script>
</body>

</html>

PHP GD库转换输出为base64

发表于 2022-01-11 | 分类于 后端开发 , PHP |
字数统计: 141 | 阅读时长 ≈ 1

使用GD库的 imagejpeg() / imagepng() 处理图片,它们直接写入所述图像数据,以输出流(或文件)。

如果你想获取图片文件内容则通过如下方法:

1
2
3
4
5
6
// $img = 要处理的图像资源;
ob_start();// 打开输出控制缓冲
imagepng($img);// 显示PNG图像
$image_data = ob_get_contents();// 返回输出缓冲区的内容
imagedestroy($img);// 释放与 image 关联的内存
ob_end_clean();// 清空(擦除)缓冲区并关闭输出缓冲

$image_data得到的数据就是图片文件的数据内容 或者 直接返回 ob_end_clean()是一样的

windows下本地搭建https服务器

发表于 2021-11-30 | 分类于 运维实战 |
字数统计: 555 | 阅读时长 ≈ 2

使用工具

  • 使用git的命令行工具或者cmder
  • 注意使用cmd命令行是不行的, cmd命令行并不能识别openssl命令

openssl genrsa 命令介绍

openssl genrsa 命令是会用来生成 RSA 私有秘钥,不会生成公钥,因为公钥提取自私钥。生成时是可以指定私钥长度和密码保护。
如果需要查看公钥或生成公钥,可以使用 openssl rsa 命令。

创建私钥

生成秘钥是生成证书的前提

阅读全文 »

Yii2 自定义省市区三级联动挂件

发表于 2021-11-26 | 分类于 PHP框架 , Yii |
字数统计: 976 | 阅读时长 ≈ 5

废话不多说直接上车

  1. 创建地区表结构
1
2
3
4
5
6
7
8
9
10
11
12
DROP TABLE IF EXISTS `region`;
CREATE TABLE `region` (
`region_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '地区ID号',
`parent_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '地区父级ID',
`region_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '地区名称',
`region_type` tinyint(1) NOT NULL DEFAULT 2 COMMENT '地区级别',
PRIMARY KEY (`region_id`) USING BTREE,
INDEX `parent_id`(`parent_id`) USING BTREE,
INDEX `region_name`(`region_name`) USING BTREE,
INDEX `region_type`(`region_type`) USING BTREE,
INDEX `agency_id`(`agency_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 659009509 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '地区' ROW_FORMAT = Dynamic;
  1. 创建 Region Model 文件

/common/models/Region.php

阅读全文 »

Yii2 ActiveRecord多表关联和多表关联搜索的实现

发表于 2021-11-23 | 分类于 PHP框架 , Yii |
字数统计: 337 | 阅读时长 ≈ 1

需求:假设我们有一张商品表goods和一张商品分类表categories,通过商品分类简称搜索商品列表

goods表AR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace common\models;

use Yii;
use yii\db\ActiveRecord;

class Goods extends ActiveRecord
{
/**
* {@inheritdoc}
*/
public static function tableName()
{
return '{{%goods}}';
}

/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id' => '商品ID',
'title' => '商品标题',
'cid' => '商品分类ID',
'created_at' => '添加时间',
'updated_at' => '修改时间'
];
}

/**
* 与商品分类表关联
*/
public function getCategory()
{
return $this->hasOne(Category::className(), ['id'=>'cid']);
}
}
阅读全文 »
1…345…21
Peak Xin

Peak Xin

Always keep a learning heart.

203 日志
42 分类
118 标签
RSS
GitHub E-Mail Twitter StackOverflow GitLab Travis Gitee SegmentFault CSDN
推荐网址
  • 阮一峰的个人网站
  • 廖雪峰的官方网站
  • 韩天峰(Rango)的博客
© 2026 Peak Xin 鲁ICP备15013472号-3
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4
本博客 由 Peak Xin 采用 知识共享 署名 4.0 国际 许可协议进行许可。
站点总访客数: 站点总访问量:
0%