面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块
-
微信小程序前端微信小程序前端易错点收集查看
-
css/less/sass样式控制在开发过程中的一些样式控制bug规避查看
-
tp5开发小程序tp5开发小程序时错误积累查看
-
PHP错题集PHP在实际开发过程中遇到的问题查看
-
MySql数据库使用MySql在实际开发中遇到的错误总结查看
-
TP5错题集积累tp5框架在实际开发过程中遇到的问题查看
-
uni-app爬坑主要用于uni-app项目中遇到的一些问题查看
-
Vue.js易错收集vue.js项目常见错误收集整理查看
-
uni-app开发微信小程序uni-app开发微信小程序的一些爬坑积累查看
-
LinuxLinux在部署、开发、运维时遇见的错误积累查看
-
安全设计常见安全设计查看
-
Redis项目中使用redis的相关错误积累查看
-
前端特效前端特效相关错题集查看
最新博文
-
开启openssl 扩展
Linuxphp7默认是没有加载openssl动态库,通过php -m能看到openssl模块,但在使用加解密的一些函数方法时。并不能正常使用。
即openssl实际上没有打开启动
一.下载对应版本php
通过cd 到根目录,输入php -r 'phpinfo();' 查看当前php版本号
php -r 'phpinfo();'
然后cd 到usr/local 进行对应php版本下载,此处示例是7.3.12
wget http://cn2.php.net/distributions/php-7.3.12.tar.gz
然后解压
tar -zxvf php-7.3.12.tar.gz
二.执行phpize
进入刚才解压文件php-7.3.12中,cd到openssl
cd php-7.3.12/ext/openssl
执行phpize,如果不知道phpize路径,可通过whereis phpize指令获取
/usr/bin/phpize
如果报错Cannot find config.m4,则文件夹中可能存在config0.m4文件,而不存在config.m4文件,则将其改名,执行mv命令
mv config0.m4 config.m4
然后在执行/usr/bin/phpize指令
三.make编译
执行完上述步骤后,会在openssl文件夹中生成configure文件
执行包含openssl及相关php配置的php编译配置
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
如果报错找不到php-config路径,则在/www/server/php/73/bin中看看,将--with-php-config路径改为--with-php-config=/www/server/php/73/bin/php-config
执行完后,执行make
make
make执行完后执行安装
make install
执行完上述步骤后就会在php扩展库文件夹中生成openssl.so文件
在php.ini中extension=......./openssl.so即可
阅读更多风口下的猪2021-12-27【Linux】
-
configure --with-openssl --with-php-config=/usr/local/bin/php-config时报错centos 中找不到 php-config
LinuxSSH中会报错找不到--with-php-config。
php-config 是一个简单的命令行脚本用于获取所安装的 PHP 配置的信息。
在编译扩展时,如果安装有多个 PHP 版本,可以在配置时用 --with-php-config 选项来指定使用哪一个版本编译,该选项指定了相对应的 php-config 脚本的路径。
一般在/usr/local/bin中会有,如果没有,则在/www/server/php/73/bin中会找到(73是具体的php版本文件名)
阅读更多风口下的猪2021-12-27【Linux】
-
php扩展库动态文件
Linux在Linux环境下的php的扩展后缀为“.so”,在Windows环境下的php的扩展名为“.dll”
阅读更多风口下的猪2021-12-26【Linux】
-
在宝塔中使用composer
CVM在面板->网站中,进入网站设置
看到composer,选择php版本,选择composer命令类型,复制composer命令,当然还得指向composer目录
即可执行
阅读更多风口下的猪2021-12-24【CVM】
-
支付宝----理解支付宝公钥和商户公钥
支付完成支付宝支付,需要用到两组RSA
(1)商户向支付宝发送信息,使用商户私钥加密,支付宝端使用商户公钥解密
(2)支付宝向商户发送信息,使用支付宝私钥加密,商户端使用支付宝公钥解密
在支付宝开放平台,应用管理->应用信息->接口加签方式->加签内容配置,进行设置
先生成一组商户公钥/私钥,复制上去,系统自动返回支付宝公钥
阅读更多风口下的猪2021-12-24【支付】
-
支付宝----如何分辨和理解notify_url和return_url
支付return_url:在你进入支付界面后,输入账号密码支付完成后,会跳入你的return_url,所以这里可以做成你的本地url,比如xxx.com/addons/epay/index/notifyx
这里会带有一些out_trade_no(你的网站生成的单号),来直接给你,然后你就可以在returnx()方法里面把out_trade_no获取到,然后进行判断,判断支付成功..
notify_url:回调url,这里是支付宝post参数的url,支付宝支付成功后,支付宝方会post一些数据到这个url,所以这个url不能是本地的域名了..他就要弄个公网能够访问的url,你在线上调,才可以获取到参数...因为支付宝无法也不可能把参数传到你的本地局域网网络上
说白了,return_url是在沙箱测试环境下使用,notify_url则是正式上线支付回调使用
阅读更多风口下的猪2021-12-24【支付】
-
Uniapp 实现 与 外部 HTML 页面通信
uni-app在 uniapp 中 经常会 内嵌 html, 并且 有时候会还有 相互通信 的需求 :
这里 总结了 两种形式
- APP 中 nvue 使用 web-view 实现html 通信;
- H5 中 vue 使用 iframe 实现html 通信;
具体实现要参考以下几点
一.让HTML 具有调用 uniapp 接口的能力
主要是通过引入uniapp相关的js函数库
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
<script type="text/javascript">
//js SDK 加载成功
document.addEventListener('UniAppJSBridgeReady', function() {
// 监听按钮事件
document.getElementById('to_shiming').addEventListener('click', function() {
let data_shiming = {
action: '1'
}
// .nvue 可以接收的事件
uni.postMessage({
data: data_shiming
});
// .vue 可以接收的事件
window.parent.postMessage(data_shiming, '*')
});
})
//接收来自 .vue 的数据 和 参数 间接 调用 函数
window.addEventListener('message', function(event) {
// event.origin --发送者的源
// event.source --发送者的window对象
// event.data --数据
if (event.data) {
//此处执行事件
if (event.data.action == 66) {
console.log("event.data.time:", event.data.time)
setBirDayInit(event.data.time)
setBirDay(true)
}
}
})
// .nvue 直接调用函数
function setBirDay(data) {
}
// .nvue 直接调用函数
function setBirDayInit(day) {
}
</script>二.从 uniapp 调用 html 网页
1.从 .nvue 调用 html
<template>
<view class="web-view">
<web-view class="web-view" :src="url" ref="webview" @onPostMessage="handlePostMessage" @receivedtitle="onReceivedTitle">
</web-view>
</view>
</template>
<script>
export default {
methods: {
handlePostMessage: function(data) {
// 获取网页的参数
console.log("得到参数", data.detail);
},
onPageFinish: function(e) {
this.$refs.webview.evalJs("方法名('" + 参数 + "')");
this.$refs.webview.evalJs("方法名('参数')");
},
}
}
</script>2.从 .vue 调用 html
<template>
<view class="bir-webviwe">
<iframe id="iframe" class="viewiframe" :src="url" ref="iframe" @onload="onLoad"></iframe>
</view>
</template>
<script>
export default {
mounted() {
// 接受子页面发来的信息
window.addEventListener("message", this.ReceiveMessage);
//console.log("------>",this.url)
},
methods: {
onLoad() {
console.log("---------------->onLoad")
},
ReceiveMessage(event) {
if (event.data && event.data.data && event.data.data.arg) {
console.log("iframe 参数 event.data:", event.data.data.arg)
}
},
SendMessage() {
let str = toolTimer.formatTime(new Date(), "yyyy-MM-dd")
let data = {
action: 66,
time: str
}
document.getElementById('iframe').contentWindow.postMessage(data, '*')
}
}
}
</script>————————————————
原文链接:https://blog.csdn.net/nicepainkiller/article/details/104475415
阅读更多风口下的猪2021-12-16【uni-app】
-
TP6使用视图时注意点
thinkphpTP6原本更适合接口,但有时项目需要用到视图。这里需要几个注意的地方
一.TP6默认没有开启视图,需要下载依赖
如果项目vendor/topthink中没有think-view说明其没有开启视图
composer require topthink/think-view
则项目中会下载think-view和think-template两个文件
二.TP6多应用模式下,fetch()有些bug,建议通过绝对路径,而不用控制期+操作名为参数
├─app │ ├─app1 (应用1) │ │ └─view(应用视图目录) │ │ ├─index index控制器目录 │ │ │ └─index.html index模板文件 │ │ └─ ... 更多控制器目录 │ │ │ └─ app2... (更多应用)
<?php
namespace app\index\controller;
use think\facade\View;
class Index
{
public function index()
{
$object_path=app()->getRootPath();
$template_path=$object_path.'app/client/view/login/qq_login.html';
}
}使用app()->getRootPath来获取项目绝对路径,再拼接文件路径,获得模板文件绝对路径
阅读更多风口下的猪2021-12-16【thinkphp】
-
TP6集成QQ登录--前后端分离情况下如何捕获登录成功状态及openid、userinfo等参数
thinkphp1.回调接口是后端的,且其为腾讯QQ服务器调用,其获取的openid、userinfo如何被应用前端获取到?
2.为了良好的前端交互性,如何确保用户知道自己已经登录成功?
但既然是前后端分离,那就不要考虑session、cookie这类浏览器同域下皆可调用的东西
解决方案:
(1)前端登录,调转到一个webview页面(或iframe),该页面的url就是qq登录的接口;
(2)在该webview页面用户授权登录后,会请求回调接口,此时将回调接口通过view模板渲染变成html页面;
(3)回调html页面中引入uni操作js库,使其能与uniapp主体页面进行数据通讯,将后端的登录成功信息、openid、userinfo等传给uniapp主体页面;
(4)前端主体获得webview传过来的数据,进行交互设计及相关数据存储
阅读更多风口下的猪2021-12-16【thinkphp】
-
集成QQ授权登录核心--accessToken的理解
thinkphpaccessToken不是拿来应用面向用户鉴权的,而是QQ官方拿来面向应用鉴权的,即应用使用该token去获得用户相关信息。
所以QQ登录的面向用户鉴权,要自己做,通过JWT来自己根据用户信息进行签发token
阅读更多风口下的猪2021-12-15【thinkphp】
-
Tp6集成QQ登录,登录后报错The state does not match. You may be a victim of CSRF.
thinkphp出现The state does not match. You may be a victim of CSRF.
原因主要有两种:
(1)点击QQ登录时访问的域名与回调地址中的域名不一样
常见原因是http与https写错不同,或者一个加了www,一个没加
如何排查?
查看登录前url中state参数与登录后报错时url中state参数是否一致,如果不一致就是这个原因
(2)网站的session未保存,导致回调方法在校验时不通过
session未保存的解决方法是:
a.将封装的qq登录库中哪些$_SESSION['xxxx']写法全部替换为tp框架中session操作助手函数session('xxxxx');
b.由于TP6专为API设计,强调前后分离,框架默认是没有开启session的。所以要将其开启
TP6开启session的方法:
在全局的中间件定义文件中加上下面的中间件app/ExceptionHandle.php中定义:
\think\middleware\SessionInit::class
即可
阅读更多风口下的猪2021-12-15【thinkphp】