默认分类

默认分类

默认分类描述

关于ios开发html5应用时点击延迟的解决方案

myxf 发表了文章 • 0 个评论 • 3609 次浏览 • 2015-12-14 16:04 • 来自相关话题

不管在移动端还是PC端,我们都需要处理用户点击,这个最常用的事件。但在touch端click事件响应速度会比较慢,在较老的手机设备上会更为明显(300ms的延迟)。

[移动端click事件延迟300ms到底是怎么回事,该如何解决?]

问题由来 

这要追溯至 2007 年初。苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的。于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题。 

这当中最出名的,当属双击缩放(double tap to zoom),这也是会有上述 300 毫秒延迟的主要原因。双击缩放,顾名思义,即用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。 

那么这和 300 毫秒延迟有什么联系呢? 

假定这么一个场景。用户在 iOS Safari 里边点击了一个链接。由于用户可以进行双击缩放或者双击滚动的操作,当用户一次点击屏幕之后,浏览器并不能立刻判断用户是确实要打开这个链接,还是想要进行双击操作。因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕。 

鉴于iPhone的成功,其他移动浏览器都复制了 iPhone Safari 浏览器的多数约定,包括双击缩放,几乎现在所有的移动端浏览器都有这个功能。之前人们刚刚接触移动端的页面,在欣喜的时候往往不会care这个300ms的延时问题,可是如今touch端界面如雨后春笋,用户对体验的要求也更高,这300ms带来的卡顿慢慢变得让人难以接受。

那么我们该如何解决这个问题,可能有的同学会想到touchstart事件,这个事件响应速度很快啊,如果说开发的界面上面可点击的地方很少,要么用户滑动下手指就触发touchstart事件,也会让人崩溃的。大家可以参考如下的几种方法。

粗暴型:禁用缩放 
<meta name="viewport" content="width=device-width, user-scalable=no"> 关键是 user-scalable = no。 这个属于简单粗暴型的,虽然看似完美,但有一个致命的缺陷,当你必须完全禁用缩放来达到目的时候,就傻眼了,只有特定场景下的交互界面,此方案才可行,其它大多数情况,此法都不可行。 另外:Chrome 开发团队不久前宣布,在 Chrome 32 这一版中,他们将在包含 width=device-width 或者置为比 viewport 值更小的页面上禁用双击缩放。当然,没有双击缩放就没有 300 毫秒点击延迟。

指针事件 (Pointer Events) 

指针事件最初由微软提出,现已进入 W3C 规范的候选推荐标准阶段 (Candidate Recommendation)。这个草案规范旨在使用一个单独的事件模型,对所有输入类型,包括鼠标 (mouse)、触摸 (touch)、触控 (stylus) 等,进行统一的处理。 

比如用css设置-ms-touch-action: none,那么对应的元素在被点击之后,浏览器不会启动缩放操作,也就避免了这个300ms延迟,但目前只有IE10+支持,目前touch开发的重点在safari和chrome,因此你懂的,此方案目前兼容性不好,不过chrome表示会在未来版本中支持的。

指针事件 (使非IE也支持) 

上面也说道touch-action: none是一个办法,那么其它浏览器不支持怎么办呢?下面的几个类库是关于这方面的,感兴趣的可以去研究下: 

1.Google的Polymer
2.微软的 HandJS
3.@Rich-Harris 的 Points

touch-action: none这种方案虽然可以解决这个问题,但影响的面比较广,不是单纯的来解决300ms延时问题的,有可能会带来性能和其它操作上的隐患,慎用。

FastClick:闪亮登场 

FastClick是FT Labs专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。简而言之,FastClick 在检测到 touchend 事件的时候,会通过 DOM 自定义事件立即触发一个模拟 click 事件,并把浏览器在 300 毫秒之后真正触发的click事件阻止掉。 

FastClick 的使用方法非常简单,在 window load 事件之后,在body上调用FastClick.attach()即可。
window.addEventListener('load', function() {
FastClick.attach(document.body);
}, false); 
attach方法虽可在更具体的元素上调用,直接绑定到body上可以确保整个应用都能受益。当 FastClick 检测到当前页面使用meta设置了user-scalable=no或者 touch-action 属性的解决方案时,会静默退出。可以说,这是真正的跨平台方案出来之前一种很好的变通方案。 

就目前而言,FastClick 非常实际地解决 300 毫秒点击延迟的问题,唯一的缺点可能也就是该脚本的文件尺寸 (尽管它只有10kb)。如果你连这10kb都接受不了的话,那么移动端类库 jQuery和zepto.js都支持tap事件来解决这个问题,尽管它们的响应速度比FastClick慢一些。

正是因为有这些解决方案,那么首先还是挑选眼前更合适的吧,毕竟以后会不会出新标准来解决这个问题,谁都不知道,理论上来说FastClick也是属于替代方案,希望有一天touch 端的开发可以不走pc的路,让本来都苦逼的前端雪上加霜。 查看全部
不管在移动端还是PC端,我们都需要处理用户点击,这个最常用的事件。但在touch端click事件响应速度会比较慢,在较老的手机设备上会更为明显(300ms的延迟)。

[移动端click事件延迟300ms到底是怎么回事,该如何解决?]

问题由来 

这要追溯至 2007 年初。苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的。于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题。 

这当中最出名的,当属双击缩放(double tap to zoom),这也是会有上述 300 毫秒延迟的主要原因。双击缩放,顾名思义,即用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。 

那么这和 300 毫秒延迟有什么联系呢? 

假定这么一个场景。用户在 iOS Safari 里边点击了一个链接。由于用户可以进行双击缩放或者双击滚动的操作,当用户一次点击屏幕之后,浏览器并不能立刻判断用户是确实要打开这个链接,还是想要进行双击操作。因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕。 

鉴于iPhone的成功,其他移动浏览器都复制了 iPhone Safari 浏览器的多数约定,包括双击缩放,几乎现在所有的移动端浏览器都有这个功能。之前人们刚刚接触移动端的页面,在欣喜的时候往往不会care这个300ms的延时问题,可是如今touch端界面如雨后春笋,用户对体验的要求也更高,这300ms带来的卡顿慢慢变得让人难以接受。

那么我们该如何解决这个问题,可能有的同学会想到touchstart事件,这个事件响应速度很快啊,如果说开发的界面上面可点击的地方很少,要么用户滑动下手指就触发touchstart事件,也会让人崩溃的。大家可以参考如下的几种方法。

粗暴型:禁用缩放 
<meta name="viewport" content="width=device-width, user-scalable=no"> 关键是 user-scalable = no。 这个属于简单粗暴型的,虽然看似完美,但有一个致命的缺陷,当你必须完全禁用缩放来达到目的时候,就傻眼了,只有特定场景下的交互界面,此方案才可行,其它大多数情况,此法都不可行。 另外:Chrome 开发团队不久前宣布,在 Chrome 32 这一版中,他们将在包含 width=device-width 或者置为比 viewport 值更小的页面上禁用双击缩放。当然,没有双击缩放就没有 300 毫秒点击延迟。

指针事件 (Pointer Events) 

指针事件最初由微软提出,现已进入 W3C 规范的候选推荐标准阶段 (Candidate Recommendation)。这个草案规范旨在使用一个单独的事件模型,对所有输入类型,包括鼠标 (mouse)、触摸 (touch)、触控 (stylus) 等,进行统一的处理。 

比如用css设置-ms-touch-action: none,那么对应的元素在被点击之后,浏览器不会启动缩放操作,也就避免了这个300ms延迟,但目前只有IE10+支持,目前touch开发的重点在safari和chrome,因此你懂的,此方案目前兼容性不好,不过chrome表示会在未来版本中支持的。

指针事件 (使非IE也支持) 

上面也说道touch-action: none是一个办法,那么其它浏览器不支持怎么办呢?下面的几个类库是关于这方面的,感兴趣的可以去研究下: 

1.Google的Polymer
2.微软的 HandJS
3.@Rich-Harris 的 Points

touch-action: none这种方案虽然可以解决这个问题,但影响的面比较广,不是单纯的来解决300ms延时问题的,有可能会带来性能和其它操作上的隐患,慎用。

FastClick:闪亮登场 

FastClick是FT Labs专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。简而言之,FastClick 在检测到 touchend 事件的时候,会通过 DOM 自定义事件立即触发一个模拟 click 事件,并把浏览器在 300 毫秒之后真正触发的click事件阻止掉。 

FastClick 的使用方法非常简单,在 window load 事件之后,在body上调用FastClick.attach()即可。
window.addEventListener('load', function() {
FastClick.attach(document.body);
}, false);
 
attach方法虽可在更具体的元素上调用,直接绑定到body上可以确保整个应用都能受益。当 FastClick 检测到当前页面使用meta设置了user-scalable=no或者 touch-action 属性的解决方案时,会静默退出。可以说,这是真正的跨平台方案出来之前一种很好的变通方案。 

就目前而言,FastClick 非常实际地解决 300 毫秒点击延迟的问题,唯一的缺点可能也就是该脚本的文件尺寸 (尽管它只有10kb)。如果你连这10kb都接受不了的话,那么移动端类库 jQuery和zepto.js都支持tap事件来解决这个问题,尽管它们的响应速度比FastClick慢一些。

正是因为有这些解决方案,那么首先还是挑选眼前更合适的吧,毕竟以后会不会出新标准来解决这个问题,谁都不知道,理论上来说FastClick也是属于替代方案,希望有一天touch 端的开发可以不走pc的路,让本来都苦逼的前端雪上加霜。

关于使用手机做网络摄像头的研究

myxf 发表了文章 • 0 个评论 • 1349 次浏览 • 2015-12-14 15:57 • 来自相关话题

最近家里来了一个恶魔小金毛,简直是个拆迁大队队长有木有,于是乎就想知道再我上班的时间里这家伙究竟都在做些什么,就想着弄个监控摄像头,又不想花钱买啊,想到自己有一堆android平板没用,就想着能不能用手机当做网络摄像头试试传输观看呢?
 
于是乎先构想一下需求,首先家里是路由器属于内网,公司也是内网,任何传输方式都不能解决同时内网,所以就得有个服务端,就变成摄像客户端+服务器端+操作客户端。
 
第一步先解决摄像客户端,也就是app开发啦,调用摄像头将获取的数据实时保存成图片,一张图5M多太恐怖,就压缩然后修改像素,最终压缩到20KB以内,然后socket传送给服务器,服务器在转发给客户端,但在实际应用中发现这样操作丢包太大,最后实在没有办法,就将上传改成http协议,将截取的图片post到服务器保存,然后客户端不停的读取图片,最终成形,不过延迟还是很大啊,好歹还是能看了。
 
源码放附件了,服务端和客户端使用易语言编写,自己修改socket和post地址 查看全部
最近家里来了一个恶魔小金毛,简直是个拆迁大队队长有木有,于是乎就想知道再我上班的时间里这家伙究竟都在做些什么,就想着弄个监控摄像头,又不想花钱买啊,想到自己有一堆android平板没用,就想着能不能用手机当做网络摄像头试试传输观看呢?
 
于是乎先构想一下需求,首先家里是路由器属于内网,公司也是内网,任何传输方式都不能解决同时内网,所以就得有个服务端,就变成摄像客户端+服务器端+操作客户端。
 
第一步先解决摄像客户端,也就是app开发啦,调用摄像头将获取的数据实时保存成图片,一张图5M多太恐怖,就压缩然后修改像素,最终压缩到20KB以内,然后socket传送给服务器,服务器在转发给客户端,但在实际应用中发现这样操作丢包太大,最后实在没有办法,就将上传改成http协议,将截取的图片post到服务器保存,然后客户端不停的读取图片,最终成形,不过延迟还是很大啊,好歹还是能看了。
 
源码放附件了,服务端和客户端使用易语言编写,自己修改socket和post地址

关于微信运动数据获取的研究

myxf 发表了文章 • 6 个评论 • 8139 次浏览 • 2015-12-14 15:30 • 来自相关话题

最近因公司需求,要做一个微信里的html5应用,要求读取微信运动的步数数据,做数据分析与排行,个人中心、邀请好友pk和排行榜都好做,关键在于如何读取微信运行中的步数数据,研究了一下微信开放平台并没有相关的接口。

这样看来就只有自己想办法获取了,首先对微信客户端进行抓包,发现微信运动的界面是原生的,数据也是加密后的直接放弃解码,那究竟要怎么获取呢?

继续研究发现个人主页是可以分享给好友的,而分享出来的东西是一个url连接,打开是一个网页,这个就可以搞了,网页中的东东你不可能加密了吧,于是乎抓包获取地址:https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt4sls1KHY6KWvpTrFSqfCpU&fromShare=1&from=singlemessage&isappinstalled=0&pass_ticket=uIsL7ZQo5K8DBxRkgpuGmHXUk5%2BEf8b2C8%2B68Zi1eQY%3D

精简一下:https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt4sls1KHY6KWvpTrFSqfCpU 也可访问,源码中有想要的每日步数、最高纪录和总步数,在pc浏览器中直接打开是不行的需要微信登录,于是使用pc端的微信客户端打开链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7fa037cc7dfabad5&redirect_uri=http%3A%2F%2Fhw.weixin.qq.com%2Fsteprank%2Foauth%3Freturnurl%3Dhttp%253A%252F%252Fhw.weixin.qq.com%252Fsteprank%252Fstep%252Fpersonal%253Fopenid%253Do95gOt4sls1KHY6KWvpTrFSqfCpU%2526fromShare%253D1%2526from%253Dsinglemessage%2526isappinstalled%253D0%2526pass_ticket2%253DuIsL7ZQo5K8DBxRkgpuGmHXUk5%25252BEf8b2C8%25252B68Zi1eQY%25253D%26env%3D&response_type=code&scope=snsapi_base&state=8n8o-EO5FdgVe433j_4vPg&connect_redirect=1#wechat_redirect
可以正常访问,这里我们需要获取微信返回的code值,拿到这个数据就可以在pc版的浏览器中访问了,那究竟怎么获取的呢?

很简单修改一下返回url:redirect_uri url解密后:http://hw.weixin.qq.com/steprank/oauth?returnurl=http%3A%2F%2Fhw.weixin.qq.com%2Fsteprank%2Fstep%2Fpersonal%3Fopenid%3Do95gOt4sls1KHY6KWvpTrFSqfCpU%26fromShare%3D1%26from%3Dsinglemessage%26isappinstalled%3D0%26pass_ticket2%3DuIsL7ZQo5K8DBxRkgpuGmHXUk5%252BEf8b2C8%252B68Zi1eQY%253D&env=  returnurl就是微信登录验证后返回的地址,这里我们需要对url进行一点修改,首先微信登录的返回url必须在后台绑定也就是hw.weixin.qq.com这个域名是不能变的,但我们可以修改hosts文件重定向到我们本机上来,然后修改urlhttp://hw.weixin.qq.com/get.php?returnurl=http%3A%2F%2Fhw.weixin.qq.com%2Fsteprank%2Fstep%2Fpersonal%3Fopenid%3Do95gOt4sls1KHY6KWvpTrFSqfCpU%26fromShare%3D1%26from%3Dsinglemessage%26isappinstalled%3D0%26pass_ticket2%3DuIsL7ZQo5K8DBxRkgpuGmHXUk5%252BEf8b2C8%252B68Zi1eQY%253D&env=
 
写一个get.php获取返回个get参数,然后再通过微信客户端访问就可以输出微信返回的登录参数,再将修改的hosts文件注释,加上得到的返回参数访问http://hw.weixin.qq.com/steprank/oauth 就可以获得服务器输出的两个cookie hwstepranksk和pass_ticket 有了这两个cooke就可以通过浏览器正常访问:https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt4sls1KHY6KWvpTrFSqfCpU 获取步数了openid这个参数就是用户的id如果为空就读取自己本身的,可只能读取自己可不行,那其他用户的openid要怎么获取呢?

很简单了,当朋友通过微信运动主页分享给你的时候就会携带有当前用户openid的url,现在的问题是怎么自动读取到这个信息呢?

第一个想到的就是聊天记录,可惜分析了微信客户端数据库后发现数据库也是加密的,那要怎么样才能获取到这个url数据呢?于是乎想到了微信网页版,于是分析了微信网页版的源码,发现是socket通讯协议,当检查到有新消息后会触发js进行处理,如果能拦截到回调的js就好办了,当时就行通过brup拦截包修改指定的js文件:https://res.wx.qq.com/zh_CN/htmledition/v2/js/webwxApp28a2f7.js 在回调的function中加入自己的js代码,可这个方案还是太麻烦,有什么更好地方案吗?答案当然是有,还是修改hosts文件啦,将res.wx.qq.com调用的资源文件全部下载到自己的服务器上,然后修改webwxApp28a2f7.js 加上自己的代码,然后将res.wx.qq.com 定向到自己的服务器上,由于是https协议端口是443所以自己的服务器也必须是https,申请一个ssl即可,这样打开wx.qq.com 正常登录信息也可以正常回调也就会触发我们写的代码

webwxApp28a2f7.js 查找 calcMsgDisplayTime 增加一行代码输出url





这样有新消息的时候就会触发alert 输出url信息,只要在这里判断url中是否包含:https://hw.weixin.qq.com/steprank/step/personal 就截取出openid 然后构造一个iframe或者script 就可以将openid传回处理,有了openid就可以获取该用户的步数信息了。
 
总结的步奏是:
1.申请一个新的微信号;
2.使用新微信号通过微信pc客户端获取cookie值hwstepranksk和pass_ticket;
3.凡事参加活动的用户必须加这个微信号为好友,并将自己的微信运动主页分享到这个微信号中,只分享一次即可;
4.通过微信版微信获取分享的openid传到数据库中记录
5.写个php程序通过curl 附加cookie 轮询数据库中的openid主页获取微信步数
6.有了微信步数的数据就可以进行许多活动了。
 










  查看全部
最近因公司需求,要做一个微信里的html5应用,要求读取微信运动的步数数据,做数据分析与排行,个人中心、邀请好友pk和排行榜都好做,关键在于如何读取微信运行中的步数数据,研究了一下微信开放平台并没有相关的接口。

这样看来就只有自己想办法获取了,首先对微信客户端进行抓包,发现微信运动的界面是原生的,数据也是加密后的直接放弃解码,那究竟要怎么获取呢?

继续研究发现个人主页是可以分享给好友的,而分享出来的东西是一个url连接,打开是一个网页,这个就可以搞了,网页中的东东你不可能加密了吧,于是乎抓包获取地址:https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt4sls1KHY6KWvpTrFSqfCpU&fromShare=1&from=singlemessage&isappinstalled=0&pass_ticket=uIsL7ZQo5K8DBxRkgpuGmHXUk5%2BEf8b2C8%2B68Zi1eQY%3D

精简一下:https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt4sls1KHY6KWvpTrFSqfCpU 也可访问,源码中有想要的每日步数、最高纪录和总步数,在pc浏览器中直接打开是不行的需要微信登录,于是使用pc端的微信客户端打开链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7fa037cc7dfabad5&redirect_uri=http%3A%2F%2Fhw.weixin.qq.com%2Fsteprank%2Foauth%3Freturnurl%3Dhttp%253A%252F%252Fhw.weixin.qq.com%252Fsteprank%252Fstep%252Fpersonal%253Fopenid%253Do95gOt4sls1KHY6KWvpTrFSqfCpU%2526fromShare%253D1%2526from%253Dsinglemessage%2526isappinstalled%253D0%2526pass_ticket2%253DuIsL7ZQo5K8DBxRkgpuGmHXUk5%25252BEf8b2C8%25252B68Zi1eQY%25253D%26env%3D&response_type=code&scope=snsapi_base&state=8n8o-EO5FdgVe433j_4vPg&connect_redirect=1#wechat_redirect
可以正常访问,这里我们需要获取微信返回的code值,拿到这个数据就可以在pc版的浏览器中访问了,那究竟怎么获取的呢?

很简单修改一下返回url:redirect_uri url解密后:http://hw.weixin.qq.com/steprank/oauth?returnurl=http%3A%2F%2Fhw.weixin.qq.com%2Fsteprank%2Fstep%2Fpersonal%3Fopenid%3Do95gOt4sls1KHY6KWvpTrFSqfCpU%26fromShare%3D1%26from%3Dsinglemessage%26isappinstalled%3D0%26pass_ticket2%3DuIsL7ZQo5K8DBxRkgpuGmHXUk5%252BEf8b2C8%252B68Zi1eQY%253D&env=  returnurl就是微信登录验证后返回的地址,这里我们需要对url进行一点修改,首先微信登录的返回url必须在后台绑定也就是hw.weixin.qq.com这个域名是不能变的,但我们可以修改hosts文件重定向到我们本机上来,然后修改urlhttp://hw.weixin.qq.com/get.php?returnurl=http%3A%2F%2Fhw.weixin.qq.com%2Fsteprank%2Fstep%2Fpersonal%3Fopenid%3Do95gOt4sls1KHY6KWvpTrFSqfCpU%26fromShare%3D1%26from%3Dsinglemessage%26isappinstalled%3D0%26pass_ticket2%3DuIsL7ZQo5K8DBxRkgpuGmHXUk5%252BEf8b2C8%252B68Zi1eQY%253D&env=
 
写一个get.php获取返回个get参数,然后再通过微信客户端访问就可以输出微信返回的登录参数,再将修改的hosts文件注释,加上得到的返回参数访问http://hw.weixin.qq.com/steprank/oauth 就可以获得服务器输出的两个cookie hwstepranksk和pass_ticket 有了这两个cooke就可以通过浏览器正常访问:https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt4sls1KHY6KWvpTrFSqfCpU 获取步数了openid这个参数就是用户的id如果为空就读取自己本身的,可只能读取自己可不行,那其他用户的openid要怎么获取呢?

很简单了,当朋友通过微信运动主页分享给你的时候就会携带有当前用户openid的url,现在的问题是怎么自动读取到这个信息呢?

第一个想到的就是聊天记录,可惜分析了微信客户端数据库后发现数据库也是加密的,那要怎么样才能获取到这个url数据呢?于是乎想到了微信网页版,于是分析了微信网页版的源码,发现是socket通讯协议,当检查到有新消息后会触发js进行处理,如果能拦截到回调的js就好办了,当时就行通过brup拦截包修改指定的js文件:https://res.wx.qq.com/zh_CN/htmledition/v2/js/webwxApp28a2f7.js 在回调的function中加入自己的js代码,可这个方案还是太麻烦,有什么更好地方案吗?答案当然是有,还是修改hosts文件啦,将res.wx.qq.com调用的资源文件全部下载到自己的服务器上,然后修改webwxApp28a2f7.js 加上自己的代码,然后将res.wx.qq.com 定向到自己的服务器上,由于是https协议端口是443所以自己的服务器也必须是https,申请一个ssl即可,这样打开wx.qq.com 正常登录信息也可以正常回调也就会触发我们写的代码

webwxApp28a2f7.js 查找 calcMsgDisplayTime 增加一行代码输出url
QQ截图20151214152311.png


这样有新消息的时候就会触发alert 输出url信息,只要在这里判断url中是否包含:https://hw.weixin.qq.com/steprank/step/personal 就截取出openid 然后构造一个iframe或者script 就可以将openid传回处理,有了openid就可以获取该用户的步数信息了。
 
总结的步奏是:
1.申请一个新的微信号;
2.使用新微信号通过微信pc客户端获取cookie值hwstepranksk和pass_ticket;
3.凡事参加活动的用户必须加这个微信号为好友,并将自己的微信运动主页分享到这个微信号中,只分享一次即可;
4.通过微信版微信获取分享的openid传到数据库中记录
5.写个php程序通过curl 附加cookie 轮询数据库中的openid主页获取微信步数
6.有了微信步数的数据就可以进行许多活动了。
 

QQ截图20151214153011.png


QQ截图20151214153335.png

 

php Yaf框架持续更新

myxf 发表了文章 • 0 个评论 • 1944 次浏览 • 2015-12-10 17:18 • 来自相关话题

自己整理、完善的yaf框架,使用smarty模板引擎,修改了models层,增加许多扩展类比如邮件、上传等https://git.oschina.net/mayoushang/yaf
自己整理、完善的yaf框架,使用smarty模板引擎,修改了models层,增加许多扩展类比如邮件、上传等https://git.oschina.net/mayoushang/yaf

易语言编译的isapi扩展,有需要源码的留言

myxf 发表了文章 • 1 个评论 • 1865 次浏览 • 2015-12-10 17:15 • 来自相关话题

易语言编译的isapi扩展Myxf-Safe V1.2
 
可防盗链,防get、post、cookie方式注入,防止webshell的上传,新增加友好提示。
 
文件只有两个,Myxf-Safe.dll和配置文件Myxf-Safe.dll.ini,支持IIS6和IIS7效果如下:
 
http://www.bilnn.com/?id=3%20and%201=1





 
友好提示效果:





 
防盗链效果:





 
程序配置很简单,只需要加载Myxf-Safe.dll 配置一下Myxf-Safe.dll.ini 即可,防护记录会实时记录到logs目录下的域名文件夹里
 
注意插件目录不能有中文字符,目录应有读取的权限,Myxf-Safe.dll需要执行权限,logs目录需要有写入权限 
插件下载地址见附件: 查看全部
易语言编译的isapi扩展Myxf-Safe V1.2
 
可防盗链,防get、post、cookie方式注入,防止webshell的上传,新增加友好提示。
 
文件只有两个,Myxf-Safe.dll和配置文件Myxf-Safe.dll.ini,支持IIS6和IIS7效果如下:
 
http://www.bilnn.com/?id=3%20and%201=1

QQ截图20151210170821.png

 
友好提示效果:

123.png

 
防盗链效果:

456.png

 
程序配置很简单,只需要加载Myxf-Safe.dll 配置一下Myxf-Safe.dll.ini 即可,防护记录会实时记录到logs目录下的域名文件夹里
 
注意插件目录不能有中文字符,目录应有读取的权限,Myxf-Safe.dll需要执行权限,logs目录需要有写入权限 
插件下载地址见附件: