标签为 "js" 的存档

【原创】php curl 模拟实现单点登陆(PHP实现JS加密函数)

【原创】转载请注明,来自:DigDeeply的博客: https://fukun.org/

这几天晚上闲着没事干,偶然间发现新浪爱问的积分还可以换实物礼品,积分来源一部分就是提问回答之类的,还有一部分是要每天签到。我是懒人,也懒得每天提问回答啥的,为了那么个小礼品,也不值得。但是签到还是很简单的嘛,每天点一下就OK了。我比一般懒人还懒,每天点一下都懒得点,所以觉定做个模拟登陆,模拟签到的程序,放到SAE上去,每天帮我签个到,拿个积分就好了,哈哈。:)

其实这个模拟登陆,也就是抓站的基础部分吧, 模拟登陆,获取登陆后的状态,然后模拟人的访问流程,获取访问结果,分析保存之……

首先介绍一下抓站的利器吧,httpwatch,也可以用firefox下的firebug或者chrome下自带的开发者工具,其实我原来一直都是用firefox或者chrome的,但是听说httpwatch很好,就拿来试用一下,结果用的还真是很舒服,不错。其次就是Snoopy.class.php,我用PHP,这个PHP类真是好用到极致了,用来抓站so easy。但是这个类用来抓一般的基于http的站是没问题的,如果要是https的就麻烦了,这个类在抓https的站时,采用的不是php本身的curl了,使用的是Linux/Unix下的原生CURL,所以这个类在windows下用着很麻烦,需要自己装一个windows下能用的curl,并且配置好环境。在sae下直接就是不行的了,如果是用Linux/Unix的话,就很方便了~~指定好curl的路径就可以了。我也有一个https的模拟登录签到的脚本,使用的是php的curl,没有使用Snoopy。

由于新浪采用了单点登陆,所以一般的登陆方法是不行的了,不是直接构造用户名密码POST到一个login action页面完事。先使用httpwatch抓取一下登陆的流程吧。

httpwatch抓取的登录新浪爱问的流程

httpwatch抓取的登录新浪爱问的流程

Read more…

JavaScript面向对象15分钟教程 – OO JS in 15mins or Less

本指南可以很快让你学会写优美的面向对象JavaScript代码,我保证!学会写简洁的JavaScript代码对一个开发者的发展很重要,随着像Node.js这类技术的出现,你现在可以在服务器端写JavaScript代码了,你甚至可以用JavaScript来查询像MongoDB这样的持久性数据存储。

现在开始写面向对象的JS(OO JS),如果你有什么问题或我遗漏了什么,在下面评论出告诉我。

Literal Notation
Literal Notation只是在JavaScript中创建对象的一种方法,是的,方法不止这一种。当你打算创建一个对象实例的时候Literal Notation是首选的方法。
var bill = {}; 

上面的代码没太大用处,仅仅只是创建了一个空对象。让我们动态的添加一些属性和方法到这个对象。

bill.name = "Bill E Goat";
bill.sound = function() {
	console.log( 'bahhh!' );
};

这里我们添加了“name”属性并赋值为“Bill E Goat”。我们不一定要在前面创建空对象,还可以只用一步完成上面 所有的事。

var bill = {
  name: "Bill E Goat",
  sound: function() {
    console.log( 'bahhh!' );
  }
};

很简洁漂亮是不是?访问属性和方法也一样很简单。

bill.name; // "Bill E Goat"
bill.sound(); // "bahhh"

Read more…

javascript js 十进制转十六进制 进制变换

今天再做一个中国地图的可视化展现,需要对每个省份的轮廓进行染不同颜色,以此来区分各个省份。
用的是百度地图,所以需要用JS来生成Polygon多边形,然后用颜色填充,现在需要随机生成颜色,所以需要随机生成3个0-16的16进制数,拼接起来,作为一个颜色的RGB值。
不多说,直接上简单明了的JS代码,如何随机生成0-16的数,然后把十进制的值转换为十六进制。

var r = parseInt(Math.random()*16);
var g = parseInt(Math.random()*16);
var b = parseInt(Math.random()*16);
//转换为十六进制,使用 int.toString(16)即可.
//相应的,还可以使用toString(10) , toString(8), toString(2)来转化为十进制,八进制,二进制等。
r = r.toString(16);
g = g.toString(16);
b = b.toString(16);
//拼接成颜色的RGB值
var color = '#'+r+g+b;

Read more…

IE7/IE8下javascript的时间函数Date()不兼容讲解–来自amcharts应用中的问题

最近在使用ammap和amcharts做一些数据可视化展现的工作,amcharts图表功能真的很强大,可自定义的属性很多。这是其官网文档链接。可以简单看看文档,会发现有很多属性,可以对图表中的每块表示数据的区域绑定事件,可以是一个url,也可以是一个js,怎么样,只有这两项,就绝对能满足很多扩展的需要了吧。

这是一个我做的例子,使用了ammap和amcharts,左边中国地图,不同省份的数据不一样,颜色代表不同等级的数据;右边是amcharts做的柱状图和折线图。

ammap和amcharts的案例--好用可扩展的javascript图表插件

ammap和amcharts的案例--好用可扩展的javascript图表插件

问题就在使用图表的过程中了,主要是右下角的那个折线图,在chrome、firefox、opera和IE9下均看过了,没有问题,可是到别人机器上,用的IE8,发现右下角的折线图出问题了。于是开始了JS的调试之旅,使用IE9的开发人员工具,可以很方便的调到IE7和IE8模式,之前一直都是firefox的firebug,现在一直都在用chrome,今天用了用IE9的调试工具,发现也挺好用的,主要是它有一个选项,可以设置为-始终从服务器中刷新,这样,每次IE运行获得的JS和CSS文件等,都不会是缓存中来的,调试起来很方便,不用总去清缓存。见下图:

Read more…

jquery 滑动 回到顶部代码

jQuery实现滑动回到顶部效果:

$('html, body').animate({scrollTop: 0},500);

Read more…

jQuery 延迟 函数 让层延时几秒后消失

jquery 让一个div延时消失,纯jQuery,不用settimeout,就用jQuery写。

<script language='javascript' type='text/javascript'>
$(document).ready(
    function()
    {
        /**
        *1.delay函数是jquery 1.4.2新增的函数
        *2.hide函数里必须放一个0,不然延时不起作用
        */
        $('#divid').delay(10000).hide(0);
    }
);
</script>

Read more…

javascript/js中保留两位小数的函数

var   test=36.8534 ;
alert(test.toFixed(2)) ;

用这样的函数就可以以四舍五入的形式保留两位小数。
很好用的,快去试试吧。
Read more…

亲爱的PHP,我要离开你了,因为,我对NodeJs更有感

亲爱的PHP,

我知道这封信不会给你惊喜。我们在一起已经有一些时日了,但是,从今天开始,我们将分道扬镳。

写下这些并不容易。你和我共度了很长时间。很难相信,在10年前你就欢快的接受我,让我进入你的怀抱。你年轻,sexy,和我的前任Perl比起来,你犹如一阵清风。我们在一起没过多久,你开始给我带来效益,过去的十年,我的每一份工作都是以你为基础的。 我们拥有很多美好的时光。记不记我们上了CNN头版【1】,14天里就获得$500的进账?这些年,每一次动态创建PDF,我的脸上都会绽放出笑容。
但是我们仍然有艰难的日子。我希望在我的余生里,再也不要听到这个词“register globals”(注册全局变量)。你也知道,直到现在,我还留着和你一起创建SOAP客户端的伤疤。我们谁也不能保证可靠(不知道PHP V6 发布后,以及支持UTF-8后会是怎么样的情形?)。不论如何,我们此前总是能解决分歧。
Read more…

jquery用$.each处理返回的json数据

jquery用$.each处理返回的json数据:
例如,json数据如下:

[ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "beauty"}
]

希望用jquery对此数据进行操作,使用$.each:

$.each(data, function(i, item) {
    alert(item.PageName);
});

本人亲测可行。
Read more…

jquery bind select onchange用法

在使用jquery时,bind了onchange,但是却不能生效,经查实后,发现,需要bind的是change,才会出发如select等的onchange动作。

$('#region').bind('change',function(){
alert('t');
});

Read more…