ios系统微信小程序onShow或onLoad中唤起扫码的问题

这个问题可能很多人之前都碰到过,但是后来其实官方解决了这个问题,可以在onShow或onLoad中使用wx.scanCode唤起扫码,所以后期应该不会有这个问题,但是出于兼容旧版本微信和ios系统,其实还是应该想想办法。

今天这里要说的是一个以然存在问题还没有被解决的问题,以然是ios系统,也是在onShow或onLoad中唤起扫码的问题,不同的是,如果你把扫码放到一个公用的方法里面,比如放在了app.js中,那么在onShow或onLoad中调用这个函数100%不能唤起扫码。

造成上述两个不同场景下的同一个问题的原因,估计是在onShow或onLoad的时候,系统还没有来得及加载必要的东西进来。

解决方法:

setTimeout(function(){
//调用的公有方法或者wx.scanCode
},500);

php5.6.*将在2018年12月31日停止安全支持,php5时代的终结

php5.6.*将在2018年12月31日停止安全支持,这意味着php5时代的终结,当然,也是真正的php7时代的到来,到时候,如果还有人的服务器php版本不更新到7.0,很可能面临着一大波黑客的蠢蠢欲动。

所以,早起的鸟儿有虫吃,赶快升级自己的php版本吧!

mysql中的group_concat和limit同用的问题,一个另类思路

在开始之前,我们先了解一下group_concat语法:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

很显然,这不是一个常用的语句,甚至于有些老程序员也不没有用过几次,当有需要的时候,难免会砰墙。而和limit同用就是一面高强,因为他们没有办法一起使用,例如下面的用法就是错误的,limit无效。 继续阅读“mysql中的group_concat和limit同用的问题,一个另类思路”

php导出CSV格式文件的换行符问题

php导出csv格式比起来使用excel的其他导出插件效率要高很多,尤其是对那些没有特殊要求的数据导出,csv格式导出是最好的选择。
然而,有时候我们会碰到需要在csv文件中的行内换行需求,这时候,如果简单的使用\n之类的换行符不一定能起到应有的作用,而是会出现意外情况:
不是换行,而是换格了。 继续阅读“php导出CSV格式文件的换行符问题”

结合TP、CI等php框架做微擎模块开发

首先,我们要知道,使用框架可以让开发变得更加敏捷和迅速,因为框架给我们搭好了舞台,而作为程序猿,我们只需要在这个舞台上表演好自己的节目即可。
而作为微擎的开发者,使用微擎本身的框架也可以做开发,但是微擎的框架有很多不成熟的地方,而且和有些人的开发习惯相悖,所以,选用自己的开发框架是一个不错的选择,尤其是考虑到以后的移植,更是要考虑一下怎么摆脱平台的套路。

小程序无法获取昵称和头像的解决办法

最近一个小程序的项目,做到一半的时候突然发现新用户无法正常获取到用户的昵称、头像等开放数据,非常郁闷,虽然只是开发版,但是遇到这种情况上线肯定不行,只能找解决办法。
无意中在微信开发工具的控制台看到这样一段话:

VM7110:1 获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级

好吧,微信这么重大的升级,尽然不知道,看文档:

wx.getUserInfo(OBJECT)

注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type=”getUserInfo”></button> 引导用户主动进行授权操作

  1. 当用户未授权过,调用该接口将直接报错
  2. 当用户授权过,可以使用该接口获取用户信息

现在,聪明人都知道是什么问题了,话说官方这样做真的提高用户体验了吗?

解决办法:

1.在页面中检查用户是不是授权,如果没有授权,那么引导授权,最好的办法是跳转到一个新的专门授权的页面中,示例代码如下。

<!--wxml-->
<!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>
<!-- 需要使用 button 来授权登录 -->
<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
<view wx:else>请升级微信版本</view>

2.在页面的js文件的onload中,检查是不是授权,没有授权,跳转到授权页授权:

Page({
  data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo')//检查有没有使用权限
  },
  onLoad: function() {
    // 查看是否授权
    wx.getSetting({
      success: function(res){
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function(res) {
              console(res.userInfo)
            }
          })
        }
      }
    })
  },
  bindGetUserInfo: function(e) {
    console.log(e.detail.userInfo)
  }
})

3.授权之后,就可以正常使用wx.getUserInfo获取用户数据了,获取成功后,跳转回之前的页面。

使用onShareAppMessage小程序自定义页面分享内容

今天做一个小程序,碰到了自定义分享内容(标题、图片,甚至于自定义页面)的问题,因为是第一次做,还是碰到不少坑,这里分享一下。
首先,只有在页面的Page中定义了 onShareAppMessage 函数,才能使用右上角分享菜单按钮,该函数的参数如下:

onShareAppMessage: function (res) {
    return {
      title: '自定义转发标题',
      path: '/page/index/index/',
      imageUrl:'图片链接',//本地或线上的都可以
      success: function(res) {
        // 转发成功
      },
      fail: function(res) {
        // 转发失败
      }
    }
  }

当然,一般我们都不希望分享的内容写死的,所以,最好是在页面中用分享按钮的点击事件来异步请求分享信息。
最后,如果要启用右上角的分享菜单,需要在onload中加入

wx.showShareMenu({
  withShareTicket: true
})

让你的网站整站变灰,使用css的filter滤镜属性

今天是512,大家都知道是什么日子,一般情况下,在这样的日子里,大一点的网站都会做一些小改动以纪念逝者,例如,将整站变成灰色。

其实,这不是什么特别难的事情,只需要一行CSS代码就够了。

filter: grayscale(0);

当然,为了兼容主流的其他浏览器,还应该加上

-webkit-filter:grayscale(0);/* Chrome, Safari, Opera */