其他教程
模板兔提供一些网站建设相关的教程,让大家迅速的做好一个网站。
本文介绍如何在小程序中内嵌H5,并完成微信支付的整个流程闭环。我们知道微信H5支付是通过生成特定的支付链接,并跳转到这个链接去完成支付操作的。但在微信小程序中对于内嵌的页面域名具有白名单限制,如果支付链接是第三方的无法做加白处理。
这个时候我们就得换个思路了,该怎么解决呢?咱们往下看。
实现过程
小程序入口
在微信小程序中新建一个页面,使用web-view组件作为内嵌H5的入口,由于后续支付需要用到appId以及openId信息,因此需要对url做带参做处理
// page.wxml
<web-view src="{{url}}"></web-view>
url处理逻辑:
Page({
data: {
url: ''
},
onLoad: function (options) {
wx.sh...
最近模板兔给一个客户做Ai绘画小程序,需要用到自动翻译,一开始用百度的接口,但是但是百度接口在某种情况下有Bug,所以转用了阿里云的接口,下面简单说一下如何使用阿里云机器翻译API。
SDK安装
composer require alibabacloud/sdk
比如你的项目目录是app,那么可以在宝塔里对app目录进行composer安装,安装完成后会自动生成一个vendor文件夹,然后接着引用即可。
Github地址是github.com/aliyun/openapi-sdk-php
代码示例
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
re...
最近模板兔给客户做了一个功能就是对海外用户价格翻倍,那么我们如何判断是海外用户呢?
这里,我们可以通过一个IP获取归属地的接口来简单判断下,但是这样判断可能会导致网络卡顿。
$ip = mbt_get_ip();
$api = "http://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=".$ip."&co=&resource_id=6006";
$result = get_url_contents($api);
$result= iconv('GB2312', 'UTF-8', $result);
$result = json_decode($result,true);
if($result['status'] == '0'){
$loct = $result['data'][0]['location'];
//echo $loct;
if(strpos($loct,'北京')!==false || strpos($loct,'上海')!==false || strpos($loct,'天津')...
我们可以通过 jsDelivr 来自建CDN加速。它很强大,通过 GitHub 搭配 jsDelivr 可以搭建自己专属的 CDN 库。
接下来将介绍 jsDelivr 与 GitHub 如何搭配使用。
首先,登录 GitHub 账户,创建新的仓库,仓库名为 cdn 。
然后,将仓库下载下来,添加静态资源文件,模板兔添加了 jquery.min.js 文件,然后上传到远程仓库。
GitHub 仓库界面,点击 tag => Releases ,发布版本。
此时,我们通过如下 url 规则即可访问刚才发布的资源了:
https://cdn.jsdelivr.net/gh/<GitHub 用户名>/<GitHub 仓库名>@<发布的版本号>/<文件路径>
https://cdn.jsdelivr.net/gh/erphp/cdn@1.0/jquery.min.js
其...
我们在做js开发的时候会遇到使用layer框架来做弹窗处理,那么在iframe子窗口处理完逻辑后想自动关闭子窗口(不刷新父窗口)并传值给父窗口,该如何做呢?下面模板兔给出相关代码供参考。
子窗口的代码:
window.parent.erphpdownKeySuccess(data.html);
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
父窗口的代码:
function erphpdownKeySuccess(shtml){
jQuery(".erphpdown-key-result").html(shtml);
var clipboard_pop = new Clipboard(".pop-copy");
clipboard_pop.on("success", function(e) {
layer.msg("已复制关键字",{time:500});
});
}
想必很多用户都遇到自己的wordpress网站数据库挂掉的情况吧,因为内存经常不足导致宝塔面板mysql经常停止,需要检测mysql进程是否停止,就像php守护程序一样,检测到mysql 进程禁止后,检测到mysql停止会自动启动。
那么如何在数据库挂掉的时候自动重启数据库呢?
Mysql进程守护脚本 shell脚本一:
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ];then
bash /www/server/panel/script/rememory.sh
/etc/init.d/mysqld start
fi
Mysql进程守护脚本 shell脚本二:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
pgrep -x mysqld &> ...
CloudFlare 的缓存可以提高网站的访问速度,但有时也会带来一些管理上的麻烦。好在,CloudFlare 允许禁用缓存。
CloudFlare 没有直接的配置项可以禁用缓存,但它提供了 Page Rule。
使用 Page Rule 完全禁用缓存:
erphpdown.com/*
*.erphpdown.com/*
添加两条规则,都选择 Cache Level(缓存规则),值为 ByPass(绕过)。
最后不要忘了在 Caching 面板中,Purge Cache 清除所有缓存。
这样就禁用了你整个网站的缓存了。
swiper幻灯片窗口大小变化以及container容器宽度变化时会导致图片宽度与容器宽度不一样,出现错乱,经过一番查询,可以在swiper的初始化里加以下代码
resizeObserver: true, //窗口容器变化
on: {
resize: function(){
this.update(); //窗口变化时,更新Swiper的一些属性,如宽高等
},
}
但是,这个代码仅对浏览器窗口变化有效,container容器大小变化时无效,那么怎么解决呢?
可以动态获取容器的宽度,修改容器的宽度,但是我们不能直接获取容器的宽度,只能通过窗口的宽度减去其他div的宽度,计算出最新的容器的宽度。
var ddd = window.innerWidth - 90 - $(".sidebar-left").width();
swiperHome.el.style.width = ddd+'px'...
最近开发时遇到一个很奇怪的问题,swiper轮播时第二张开始会往左偏移,一开始我以为是宽度没100%,设置后也没用,百思不得其解。
最后找到了解决方案:
var swiper = new Swiper('.swiper-container', {})中添加
observer: true, // 修改swiper自己或子元素时,自动初始化swiper
observeParents: true, // 修改swiper父元素时,自动初始化swiper
这样就解决了!
PHP的array_filter函数,通过array_filter可以在数组中查找value
<?php
// 定义一个二维数组
$arr = array(
array('id'=>2, 'score'=>103),
array('id'=>5, 'score'=>102),
array('id'=>3, 'score'=>102),
array('id'=>3, 'score'=>107),
array('id'=>4, 'score'=>101),
);
/*********** 在二维数组中通过value查找数组元素 ***********/
$searchValue = 102;
$r = array_filter($arr, function($t) use ($searchValue) { return $t['score'] == $searchValue; });
var_dump($r);
/******************** 查找end ********************/
?>
本文实例为大家分享了JavaScript实现无缝滚动图片的具体代码,供大家参考,具体内容如下:
参数说明:
setInterval 开启间隔型定时器
clearTimeout 关闭定时器
offsetWidth 获取宽度
offsetLeft 获取向左偏移量
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>无缝移动</title>
<style>
*{margin: 0; padding: 0;}
#div1{width:520px; height:170px; margin:20px auto; position: relative; /* !!! div1 的位置是相对的 */
background: pink; overflow: hidden} /* !!! overflow: hidden */
#div1 ul{position: absolute; left:0; top:0;} ...
checkbox/ radoi默认不支持更改背景颜色,这里可以使用伪类来实现。基本原理是利用after/ before插入新的元素。然后利用新元素的背景颜色或背景图片覆盖掉原来的样式。
input[type=checkbox] {
margin-right: 5px;
cursor: pointer;
font-size: 14px;
width: 15px;
height: 12px;
position: relative;
}
input[type=checkbox]:after {
position: absolute;
width: 10px;
height: 15px;
top: 0;
content: " ";
background-color: #ff0000;
color: #fff;
display: inline-block;
visibility: visible;
padding: 0px 3px;
border-radius: 3px;
}
input[type=checkbox]:checked:after {
content: "✓";
font-size: 1...
这里提供宝塔官方论坛的一键脚本安装,但是安装过程也非常漫长,慢慢等吧。
wget http://download.bt.cn/install/ext/ffmpeg.sh && sh ffmpeg.sh
安装完后可输入以下命令是否安装成功。
ffmpeg -version
3、网站应用
应用到网站需要在PHP×设置中取消掉 scandir,exec、system、shell_exec函数。
装好之后,PHP截图某一帧代码:
exec('/usr/local/bin/ffmpeg -ss 00:00:01 -i ./test.mp4 ./test.jpg -r 1 -vframes 1 -an -f mjpeg 1>/dev/null');
PHP代码示例:
function ffmpeg_thumb_callback(){
global $wpdb;
$post_id = esc_sql($_POST['post_id']);
$video = esc_sql($_POST['video']);
$status = 0;
...
CloudFlare大家都知道是做防护的,那么我们把域名DNS换成CF的之后,如果使用CF的免费SSL证书呢?
其实很简单,只需要一步即可,而且你不需要在服务器里配置SSL。当然,这个免费SSL证书只加密浏览器与 Cloudflare 之间的流量,也就是说SSL/TLS 加密模式为 灵活。
在CF后台的网站菜单里,点进某个域名,你会看到如下:
生效后,上图的那个“无证书”的地方会显示你的域名,状态为有效。
1、清理网站日志/php站点session/系统邮件/临时文件
cd /www/server/panel && python tools.pyc clear
2、清空面板回收站
rm -rf /www/Recycle_bin
3、清除mysql二进制日志(操作过程中会停止重启数据库)
/etc/init.d/mysqld stop
rm -f /www/server/data/ib_logfile*
rm -f /www/server/data/mysql-bin.*
/etc/init.d/mysqld start
4、检查磁盘剩余空间
df -h
5、查询整个服务器磁盘空间内容
du -h --max-depth= /
假如看到www文件夹占用空间较大,那么定位到www目录
du -h --max-depth= /www/
找到大文件删掉即可。一般都是一些.log日志文件把磁盘空间占满了。