request:fail ssl hand shake error 微信小程序 调试预览失败

我的解决方案:因为我是bt宝塔集成环境,我直接用的宝塔给我自动分配的 宝塔ssl【提示:先在宝塔ssl切换按钮中申请成功后部署】 Let’s Encrypt

提示:部署好后,没有重新启动服务器。

 

网上解决方案:

问题:本地调试request能正常访问https,真机调试预览的时候无法获取数据,提示:request:fail ssl hand shake error

解决方法:

证书是申请的腾讯云免费的, ssl证书配置需要使用pem,不使用crt, 之前一直不行,后来配置修改成 pem就好了

#  ssl_certificate /etc/ssl/xxx.crt;
ssl_certificate /etc/ssl/xxx.pem;

pem 可以通过crt+key在线合成:https://www.myssl.cn/tools/merge-pem-cert.html

小程序远程调试总是提示“request:fail url not in domain list”?

原因分析:

1、上线前必须修改调用的url为https

有可能你上线前没有修改本地调试http路径为真实https路径。

提示:一般本地调试可以用http,但是一定要在本地开发环境,项目设置中勾选不验证域名。上线必须用https。

2、报错提示说请求的url不在域名列表里,应该是还没有配置服务器域名

操作方法是到小程序后台:开发-》开发设置-》服务器域名:

request合法域名
  • https://xcx.XXX.com

一个月内可申请5次修改

本月还可修改4次

socket合法域名
  • wss://xcx.XXX.com
uploadFile合法域名
  • https://xcx.XXX.com
downloadFile合法域名
  • https://xcx.XXX.com

iframe隐藏边框和滚动条最简单的方式

iframe通过下列代码可以实现去除边框,滚动条,但是需要调整好高度,而且对应的子页面,高度应该是固定的,才容易使用。

<iframe src="http://www.xuduowei.html" style="width:100%;height:1100px" name="iframe_a"  frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no" allowtransparency="yes"></iframe>    

 

mysql截取字符串转成数字并比较排序

 SUBSTRING_INDEX([列名],[分割符],[段数])
 列名:要分割列里内容的列名
 分割符:用来切割的符号
 段数:切割后取的长度
select showids,SUBSTRING_INDEX(showids,',',-1) as x from cbd_products 
order by x asc

select showids from cbd_products  order by (SUBSTRING_INDEX(showids,',',-1)+0) asc

mysql特性(+0会自动转化为数字),作数值的大小比较!
tp5中的应用: $list=$obj->db->where($tj)->order("(SUBSTRING_INDEX(showids,',',-1)+0) asc,id desc")->select();

参考url:https://www.cnblogs.com/cuiyf/p/10077707.html

其他:mysql的查询中怎么截取字符串:

从左开始截取字符串left(str, length);

从右开始截取字符串right(str, length);

截取字符串substring(str, pos, length),说明:substring(被截取字段,从第几位开始截取,截取长度);

按关键字截取字符串substring_index(str,delim,count),说明:substring_index(被截取字段,关键字,关键字出现的次数)。

tp5查询后保持分页条件

在这里记录一下Tp5保持分页状态的两种方法:

一:

Db::name('data') -> where($where)  -> paginate(5,false,['query' => request()->param()]);

二:

$params = $this -> request -> param();
 $users = Db::name('data')->where($where)->paginate(15);
 
// 在 render 前,使用appends方法保持分页条件
$users->appends($params);
 
$this->assign('page', $users->render());//单独提取分页出来

 

thinkphp5 中 db::query 原生查询如何实现分页?

	$sql="select a.*,b.name from obj_users_admin a left join obj_users_admin_groups b on a.gid=b.id";		

		$b=$num=2;		//每页显示记录数		
		$page=input("get.page")?input("get.page"):1;	//当前页
		$count = Db::execute($sql); //总条数		
		
		$a=($page-1)*$b;
		$sql2=$sql." limit $a,$b";
		$list = Db::query($sql2); //当前页数据
		$arr=Bootstrap::make($list,$num,$page,$count,false,['path'=>Bootstrap::getCurrentPath(),'query'=>request()->param()]);
		
		print_r($arr);
		print_r($arr->render());

徐多蔚亲测无误!

tp5中LEFT分页格式:

	$a=config("database.prefix")."users_admin";
		$b=config("database.prefix")."users_admin_groups";

		$arr=$obj->db->table("$a a")
->join("$b b", "a.gid=b.id", 'LEFT')->where($tj)->field("a.*,b.name")->order("a.updatetime desc,a.id desc")->paginate(2,false, [
                'query' => Request::instance()->param(),//不丢失已存在的url参数
            ]);

 

php将数组写入到文件的三种方法

php将数组原样写入或保存到文件有三种方法可以实现,

第一种方法是使用serialize,

第二种方法是使用print_r,

第三种方法是使用var_export,

本文章向大家介绍这三种方法是如何将数组写入到文件的,需要的朋友可以参考一下。

第一:serialize方法

使用 serialize 将数组序列化,存储在文件中;调用时,再使用 unserialize 还原。

<?php 
$file='./cache/phone.php'; 
$array=array('color'=> array('blue','red','green'),'size'=> array('small','medium','large')); 
//缓存 
if(false!==fopen($file,'w+')){ 
  file_put_contents($file,serialize($array));//写入缓存 
} 
//读出缓存 
$handle=fopen($file,'r'); 
$cacheArray=unserialize(fread($handle,filesize($file)));

第二:print_r方法

用print_r 将数组打印到txt文件中。

<?php
$b = array (
    'm' => 'monkey', 
    'foo' => 'bar', 
    'x' => array ('x', 'y', 'z'));

$results = print_r($b, true); 
file_put_contents('filename.txt', print_r($b, true));
?>

第三:var_export方法

用var_export 直接将数组以完整数组的形式存储到文件中。

<?php 
$file='./cache/phone.php'; 
$array=array('color'=> array('blue','red','green'),'size'=> array('small','medium','large')); 
//缓存 
$text='<?php $rows='.var_export($array,true).';'; 
if(false!==fopen($file,'w+')){ 
  file_put_contents($file,$text); 
}else{ 
  echo '创建失败'; 
}

 

宝塔部署时,出现“open_basedir restriction in effect”错误

下面是错误代码:

Warning: require(): open_basedir restriction in effect.
Warning: require(XXXXXXXXXXX): failed to open stream: Operation not permitted in XXXX

以下有两种解决方案:

1.去掉网站目录下的勾选,防跨站攻击(open_basedir)。

2.方案2,修改目录下的.user.ini的隐藏文件

chattr -i .user.ini
vi .user.ini
追加 “:/www/wwwroot/XXXXX/”

最后重启php服务!!!

Linux中的vi指令及其他常用

 

crontab -e
1 1 * * * freshclam  #1点零1开始执行更新 Clamav 杀毒版本库
20 1 * * * clamscan –infected -r / –remove -l /var/log/clamscanxdw.log #1点20开始执行删除,同时写入指定日志到文件。

====================================================

其他crontab 指令参考:https://www.cnblogs.com/lingfengblogs/p/4162401.html

============================

Linux指令 vi编辑,保存及退出
编辑模式
使用vi进入文本后,按i开始编辑文本

退出编辑模式

按ESC键,然后:
退出vi
:q! 不保存文件,强制退出vi命令
:w 保存文件,不退出vi命令
:wq 保存文件,退出vi命令

=================

ifconfig网络相关
ls 列表命令
cd 进入目录命令
clear 清屏命令
rm 文件名命令

mkdir 创建目录命令
使用rm -rf 目录名字 命令即可 -r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,