Navicat远程连接阿里云服务器宝塔面板里创建的数据库,无法连接怎么办?

maomao 发表了文章 • 0 个评论 • 856 次浏览 • 2018-12-09 22:29 • 来自相关话题

Navicat远程连接阿里云服务器宝塔面板里创建的数据库,无法连接怎么办?:   一.阿里云创建安全策略 二.修改数据库权限为所有人 ...查看全部
Navicat远程连接阿里云服务器宝塔面板里创建的数据库,无法连接怎么办?:
 
一.阿里云创建安全策略
QQ截图20181209222413.png

二.修改数据库权限为所有人
QQ截图20181209222605.png

三.宝塔-》安全-》旅行3306端口
QQ截图20181209222824.png

四.navicat填写参数
QQ截图20181209222749.png

五.测试连接成功
QQ截图20181209222756.png

 

JavaScript 设置Cookie 获取cookie 检测cookie是否存在的代码

taotao 发表了文章 • 0 个评论 • 707 次浏览 • 2018-12-04 19:36 • 来自相关话题

JavaScript 设置Cookie 获取cookie 检测cookie是否存在的代码:   function setCookie(cname,cvalue,exdays){ var d = new Date(); ...查看全部
JavaScript 设置Cookie 获取cookie 检测cookie是否存在的代码:
 
function setCookie(cname,cvalue,exdays){
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname+"="+cvalue+"; "+expires;
}
function getCookie(cname){
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
}
return "";
}
function checkCookie(){
var user=getCookie("username");
if (user!=""){
alert("欢迎 " + user + " 再次访问");
}
else {
user = prompt("请输入你的名字:","");
if (user!="" && user!=null){
setCookie("username",user,30);
}
}
}

h5 百度地图定位 android 苹果IOS都可以正常使用

taotao 发表了文章 • 0 个评论 • 1008 次浏览 • 2018-12-03 17:40 • 来自相关话题

h5 百度地图定位 android 苹果IOS都可以正常使用:   第一步:申请百度地图开放平台AK密钥 先注册百度帐号然后进入百度地图开放平台API控制台 http://lbsyun.baidu.com/api ...查看全部
h5 百度地图定位 android 苹果IOS都可以正常使用:
 
第一步:申请百度地图开放平台AK密钥
先注册百度帐号然后进入百度地图开放平台API控制台
http://lbsyun.baidu.com/apiconsole/key,提交后会得到一个AK
 第二步:js调用代码
<script src="http://api.map.baidu.com/api?v=2.0&ak=填入申请的AK"></script>
<script type="text/javascript">
//获取当前位置
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
mk = new BMap.Marker(r.point);
getAddress(r.point);
}else {
alert('failed'+this.getStatus());
}
});
//获取地址信息,设置地址label
function getAddress(point){
var gc = new BMap.Geocoder();
gc.getLocation(point, function(rs){
var addComp = rs.addressComponents;
var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;//获取地址
console.log(address);
});

}
</script>

Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器

taotao 发表了文章 • 0 个评论 • 873 次浏览 • 2018-11-28 15:55 • 来自相关话题

Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器:   一。修改后台代码如下: /* 创建 html editor */ create_html_ed ...查看全部
Ecshop模板开发2018教程<十七>添加商品调用多个kindeditor编辑器:
 
一。修改后台代码如下:
    /* 创建 html editor */
create_html_editor('goods_desc', $goods['goods_desc']);
create_html_editor('goods_csdesc', $goods['goods_csdesc']);
$smarty->assign('goods_desc', $goods['goods_desc']);
$smarty->assign('goods_csdesc', $goods['goods_csdesc']);
二.修改前台模板文件
 
<script type="text/javascript">
var editor;
var editor2;
var editor3;
KindEditor.ready(function(K) {
editor = K.create('#editor_id');
});
KindEditor.ready(function(K) {
editor2=K.create('#editor2_id');
});
KindEditor.ready(function(K) {
editor3=K.create('#editor3_id');
});
</script>
        <table width="90%" id="detail-table" style="display:none">
<tr>
<td><textarea id="editor_id" name="goods_desc" style="width:100%;height:300px;">{$goods_desc}</textarea></td>
</tr>
</table>

<tr>
<td><textarea name="goods_csdesc"id="editor3_id" style="width:100%;height:300px;">{$goods_csdesc}</textarea></td>
</tr>

php图片搜索相似图片如何实现

taotao 发表了文章 • 0 个评论 • 793 次浏览 • 2018-11-28 10:09 • 来自相关话题

php图片搜索相似图片如何实现:   <?php class ImageHash { const FILE_NOT_FOUND = '-1'; ...查看全部
php图片搜索相似图片如何实现:
 
<?php

class ImageHash {

const FILE_NOT_FOUND = '-1';

const FILE_EXTNAME_ILLEGAL = '-2';

private function __construct() {}

public static function run($src1, $src2) {

static $self;

if(!$self) $self = new static;

if(!is_file($src1) || !is_file($src2)) exit(self::FILE_NOT_FOUND);

$hash1 = $self->getHashValue($src1);

$hash2 = $self->getHashValue($src2);

if(strlen($hash1) !== strlen($hash2)) return false;

$count = 0;

$len = strlen($hash1);

for($i = 0; $i < $len; $i++) if($hash1[$i] !== $hash2[$i]) $count++;

return $count <= 10 ? true : false;

}

public function getImage($file) {

$extname = pathinfo($file, PATHINFO_EXTENSION);

if(!in_array($extname, ['jpg','jpeg','png','gif'])) exit(self::FILE_EXTNAME_ILLEGAL);

$img = call_user_func('imagecreatefrom'. ( $extname == 'jpg' ? 'jpeg' : $extname ) , $file);

return $img;

}

public function getHashValue($file) {

$w = 8;

$h = 8;

$img = imagecreatetruecolor($w, $h);

list($src_w, $src_h) = getimagesize($file);

$src = $this->getImage($file);

imagecopyresampled($img, $src, 0, 0, 0, 0, $w, $h, $src_w, $src_h);

imagedestroy($src);

$total = 0;

$array = array();

for( $y = 0; $y < $h; $y++) {

for ($x = 0; $x < $w; $x++) {

$gray = (imagecolorat($img, $x, $y) >> 8) & 0xFF;

if(!isset($array[$y])) $array[$y] = array();

$array[$y][$x] = $gray;

$total += $gray;

}

}

imagedestroy($img);

$average = intval($total / ($w * $h * 2));

$hash = '';

for($y = 0; $y < $h; $y++) {

for($x = 0; $x < $w; $x++) {

$hash .= ($array[$y][$x] >= $average) ? '1' : '0';

}

}

var_dump($hash);

return $hash;

}

}

var_dump(ImageHash::run('./1.png', './psb.jpg'));
方法二:
 
hash($f);

}

return $isString ? $result[0] : $result;

}

public function checkIsSimilarImg($imgHash, $otherImgHash){

if (file_exists($imgHash) && file_exists($otherImgHash)){

$imgHash = $this->run($imgHash);

$otherImgHash = $this->run($otherImgHash);

}

if (strlen($imgHash) !== strlen($otherImgHash)) return false;

$count = 0;

$len = strlen($imgHash);

for($i=0;$i<$len;$i++){

if ($imgHash{$i} !== $otherImgHash{$i}){

$count++;

}

}

return $count <= (5 * $rate * $rate) ? true : false;

}

public function hash($file){

if (!file_exists($file)){

return false;

}

$height = 8 * $this->rate;

$width = 8 * $this->rate;

$img = imagecreatetruecolor($width, $height);

list($w, $h) = getimagesize($file);

$source = $this->createImg($file);

imagecopyresampled($img, $source, 0, 0, 0, 0, $width, $height, $w, $h);

$value = $this->getHashValue($img);

imagedestroy($img);

return $value;

}

public function getHashValue($img){

$width = imagesx($img);

$height = imagesy($img);

$total = 0;

$array = array();

for ($y=0;$y<$height;$y++){

for ($x=0;$x<$width;$x++){

$gray = ( imagecolorat($img, $x, $y) >> 8 ) & 0xFF;

if (!is_array($array[$y])){

$array[$y] = array();

}

$array[$y][$x] = $gray;

$total += $gray;

}

}

$average = intval($total / (64 * $this->rate * $this->rate));

$result = '';

for ($y=0;$y<$height;$y++){

for ($x=0;$x<$width;$x++){

if ($array[$y][$x] >= $average){

$result .= '1';

}else{

$result .= '0';

}

}

}

return $result;

}

public function createImg($file){

$ext = $this->getFileExt($file);

if ($ext === 'jpeg') $ext = 'jpg';

$img = null;

switch ($ext){

case 'png' : $img = imagecreatefrompng($file);break;

case 'jpg' : $img = imagecreatefromjpeg($file);break;

case 'gif' : $img = imagecreatefromgif($file);

}

return $img;

}

public function getFileExt($file){

$infos = explode('.', $file);

$ext = strtolower($infos[count($infos) - 1]);

return $ext;

}

}
调用方式如下:
 
require_once "Imghash.class.php";

$instance = ImgHash::getInstance();

$result = $instance->checkIsSimilarImg('chenyin/IMG_3214.png', 'chenyin/IMG_3212.JPG');
如果$result值为true, 则表明2个图片相似,否则不相似。

thinkcmf模板开发教程之<八>thinkcmf5 后台搜索分页保持分页条件

maomao 发表了文章 • 0 个评论 • 1754 次浏览 • 2018-11-17 12:18 • 来自相关话题

thinkcmf模板开发教程之<八>thinkcmf5 后台搜索分页保持分页条件:  $params=$this->request->param(); // 查询状态为1的用户数据 并且每页显示10条数据 ...查看全部
thinkcmf模板开发教程之<八>thinkcmf5 后台搜索分页保持分页条件:
 
$params=$this->request->param();
// 查询状态为1的用户数据 并且每页显示10条数据
$users = Db::name('user')->where('user_email','like',"{$params['email']}%")->paginate(10);
// 把分页数据赋值给模板变量users
$this->assign('users', $users);

// 在 render 前,使用appends方法保持分页条件
$users->appends($params);

$this->assign('page', $users->render());//单独提取分页出来
// 渲染模板输出
return $this->fetch();
漂泊者博客原创,转载请标注出处!

小程序前端模板开发教程之<七>微信小程序页面引入公共头部和尾部

maomao 发表了文章 • 0 个评论 • 1130 次浏览 • 2018-11-16 21:05 • 来自相关话题

小程序前端模板开发教程之<七>微信小程序页面引入公共头部和尾部:   第一步:在pages目录下面新建一个templates目录,新建footer文件,如下图 ...查看全部
小程序前端模板开发教程之<七>微信小程序页面引入公共头部和尾部:
 
第一步:在pages目录下面新建一个templates目录,新建footer文件,如下图
aaa.JPG

第二步:footer.wxml文件下编写代码如下:name 是template的属性,作为模板的名字。
bbb.JPG

第三步:现在我们在pages/index/index.wxml里面引用这个模板。
<import src="../templates/footer"/>
<template is="footer"></template>
ok,现在就能在各个小程序模板页面引用这个尾部了,头部一样的原理。
 
漂泊者博客原创,转载请标明出处。

小程序Setting data field "currentStop" to undefined is invalid

maomao 发表了文章 • 0 个评论 • 2698 次浏览 • 2018-11-12 10:07 • 来自相关话题

小程序Setting data field "currentStop" to undefined is invalid:   错误原因: 将数据字段“currentStop”设置为未定义是无效的。 ...查看全部
小程序Setting data field "currentStop" to undefined is invalid:
 
错误原因:
将数据字段“currentStop”设置为未定义是无效的。

解决方法:
出现这种情况的时候是页面setData "currentStop"的时候,没有获取到值,然后就会将undefined给currentStop字段,此时默认字段就会变成undefined,那么就会出现这种问题,解决方法就是 setData的时候判断获取到的值是否存在,不存在的时候给定一个默认值即可.

小程序前端模板开发教程之<六>flex(flexible box)弹性盒子常用功能介绍

taotao 发表了文章 • 0 个评论 • 990 次浏览 • 2018-11-05 21:28 • 来自相关话题

小程序前端模板开发教程之<六>flex(flexible box)弹性盒子常用功能介绍:   flex(flexible box)弹性盒子 一.排序 设置CSS样式为display:fl ...查看全部
小程序前端模板开发教程之<六>flex(flexible box)弹性盒子常用功能介绍:
 
flex(flexible box)弹性盒子

一.排序
设置CSS样式为display:flex;才为弹性容器。如果设置了display:flex;再定义display:block属性,不起作用,弹性容器里块状属性消失。flex容器将消除item的块状特性。

flex-direction:column;(列排序)容器下的子元素垂直排序;

flex-direction:row;(行排序)容器下的子元素水平排列。

flex-direction:row-reverse;(行倒序排列,对齐方向也会颠倒,如原来靠左对齐,reverse之后,靠右对齐)

flex-direction:column-reverse;(列倒序排列,对齐方向也会颠倒,如原来靠上对齐,reverse之后,靠下对齐)

view 不指定宽高时,默认宽度100% 高度自适应。

二.flex对齐方向:

justify-content:flex-end;设置reverse时居左,居上对齐,没设置reverse时,居右,居下对齐。

justify-content:flex-start;设置reverse时居右,居下对齐,没设置reverse时,居左,居上对齐。

justify-content:center;居中显示

justify-content:space-between;平均分布显示效果

justify-content:space-around;等距分布

三.主轴,交叉轴

什么时候是主轴,什么时候是交叉轴,取决于flex-direction的值,如果值是column 垂直就是主轴,如果是row,则水平是主轴。

justify-content:center;主轴居中显示

align-items:center;交叉轴居中显示

align-items:stretch;交叉轴的拉伸,在容器不设置高度时起作用。

align-items:baseline;每个子元素的基线对齐,第一个文字的底线对齐。

四.换行

flex-wrap:nowrap;(不换行)

flex-wrap:wrap;(换行)

小程序前端模板开发教程之<五>常用wxss样式介绍

taotao 发表了文章 • 0 个评论 • 897 次浏览 • 2018-11-05 20:31 • 来自相关话题

小程序前端模板开发教程之<五>常用wxss样式介绍:   1.尺寸单位 rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。一般以iphone6屏幕做 ...查看全部
小程序前端模板开发教程之<五>常用wxss样式介绍:
 
1.尺寸单位

rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。一般以iphone6屏幕做为视觉设计标准。

rpx 与 px单位换算如下:

QQ截图20181105202811.png

2.样式导入

可以使用@import语句来导入外联样式表,其后面跟需要导入外联样式表的相对路径,并以分号结束。

例如:

/** other.wxss **/

.appText{

  margin:10px;

}

/** app.wxss **/

@import "other.wxss";

.content_text:{

  margin:15px;

}

app.wxss是全局样式,作用于每一个页面,而page下的每一个的wxss文件只作用于当前页面,并对全局样式中的相同属性会覆盖。

对于微信小程序wxss样式的使用来说,其实大部分都和css样式一致,下面简单的进行介绍一下:
 

QQ截图20181105202907.png


QQ截图20181105202920.png


QQ截图20181105202931.png


QQ截图20181105202943.png


QQ截图20181105202952.png


QQ截图20181105203014.png


QQ截图20181105203024.png