浏览模式: 标准 | 列表
前面我们在 PHPRPC 开发应用实例(一)中给出了一个完整的 PHPRPC 1.1 的应用实例。今天我给出的是一个完整的 PHPRPC 2.0 的应用实例。大家会发现这两个程序是如此的相似,关键部分仅仅只有一点点变化,但是却已经对传输的数据进行了加密。 这个程序中除了 phprpc 的 php 服务器实现代码和 JavaScript 客户端实现代码以外,同样还是由下面四个文件组成:
  • index.htm,这个就是主界面文件。
  • query.js,这个是调用 phprpc 的 JavaScript 客户端来查询并显示结果用的。
  • query.php,这个服务器端的查询程序,相当简单。
  • query.css,用于修饰界面的 CSS 文件。
另外就是还有一些图片。 演示地址:济南大学2006年研究生考试成绩网上查询系统 如果你报考了济南大学的话,你就可以安全的从这里查到你的成绩了。

» 阅读全文

今天一天没上网,晚上打开电脑顺便看了一下网站流量统计,发现昨天的日访问人次居然到了 1203 人。这是建站以来第一次日访问量超过 1000 人次。贴个图庆祝一下: 日访问人次第一次超过 1000 人 BTW:我女朋友现在也在我的鼓动下开始写 blog 了,虽然她写的东西可能跟电脑都没有一点儿关系,不过我还是很高兴。嘿嘿。

» 阅读全文

2月
24

PHPRPC 2.0 协议描述

PHPRPC 1.1 协议描述中,我们定义了一种轻型的 RPC 机制 PHPRPC 来代替 XML-RPC。该协议可以使纯 PHP 应用程序之间的通讯更方便快速,并且可以与其它实现了该协议的语言的应用程序之间进行的通讯。本文所要描述的是,在 PHPRPC 1.1 的基础上增加了数据加密传输机制的 PHPRPC 2.0 协议。

» 阅读全文

该函数来自 http://valyala.narod.ru/huinya/pow_mod.html,利用它计算 128 位二进制数的 powmod 只需要 200 毫秒左右,而其他几个 BigInt.js 中的 powmod 函数计算这种长度的数字都需要 400-800 毫秒。因此用该函数来实现密钥交换算法的话,会得到较高的处理速度。最后 3 个函数是我补充的,str2num 用于将 packString 转化为 BigInt,num2str 用于将 BigInt 转化为 packString,rand 用于生成 n 位的随机数,如果 s = 1,则将第 n 位置一,以保证该随机数正好 n 位。

» 阅读全文

原来,在从 PHP 中直接传递字符串给 JavaScript 时,直接用了 addcslashes,如果传递的是带有 utf-8 编码汉字的,就用 "\0..\037\042\134",如果纯 ascii 范围内的字符串,就用 "\0..\037\042\134\177..\377"。但是今天在写加密程序时发现,发现程序有时行,有时不行。后来发现原来是 \v \a 搞的。addcslashes 会把 \007..\015(八进制) 转义成 \a\b\t\n\v\f\r,而其中 \a 这个 IE 和 Firefox 都不认识,\v 这个 Firefox 认识,IE 不认识。所以我写了下面这个函数,用它可以就可以转化成 JavaScript/JScript 所认识的字符串了(其中 $flag 表示是否转义 ascii 码大于 127 的字符)。感谢五帝同学的帮助! /* @author andot & wudi */ function addjsslashes($str, $flag = true) { if ($flag) { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134\177..\377"); } else { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134"); } return str_replace(array(chr(7), chr(11)), array('\007', '\013'), $str); }

» 阅读全文