[原创] 用 PHPRPC 实现 Ajax 安全登录
时间:2006-06-07
来源:互联网
昨天我举了个 用 PHPRPC 实现 Ajax 级联下拉菜单 的例子,那个例子中我们重点要演示的是用 PHPRPC 实现 Ajax 效果是多么的简单。今天我们这个例子主要演示用 PHPRPC 内置的安全加密机制来实现安全登录是多么简单。当然它同样可以用于密码设置、其它关键保密数据的传输等领域。
这个例子比昨天的例子还要简单,先来看服务器端:
PHP代码:
<?php
function login($username, $password) {
if (($username == "root") && ($password == "admin")) {
$_SESSION['user'] = "root";
return true;
}
$_SESSION['user'] = null;
return false;
}
require_once("phprpc_server.php");
new phprpc_server(array('login'));
?>
那再来看看客户端,客户端我们将 JavaScript 跟 HTML 分离了,先来看看 html 页面。
代码:
<html><head>
<script type="text/javascript" src="phprpc_client.js"></script>
<script type="text/javascript" src="login.js"></script>
</head>
<body>
<div align="center">
帐号:<input type="text" id="username" />
密码:<input type="password" id="password" />
<input type="button" value="登录" id="loginbtn" />
</div>
</body>
</html>
代码:
// 创建 phprpc 客户端对象 rpcphprpc_client.create('rpc');
// 初始化带有加密连接的 rpc 服务,第二个参数表示是否创建加密连接
rpc.use_service('rpc.php', true);
// 登录函数
function login() {
// 如果加密连接已经初始化完毕,则验证用户名密码
if (rpc.ready) {
// 获取用户输入的用户名和密码
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
// 设置远程过程调用为单向加密,
// 即传递的参数是加密的,但返回结果不加密
rpc.encrypt = 1;
// 调用远程过程验证用户名密码是否正确,并设置回调函数。
rpc.login(username, password, function (result) {
// 如果返回结果正确,则转到登录后的页面
if (result === true) {
window.location.replace('admin.php');
}
// 否则提示用户名密码不正确
else {
alert('用户名密码不正确!');
}
});
}
// 如果连接尚未初始化完毕,则等待 100 毫秒后重试。
else {
window.setTimeout('login();', 100);
}
}
window.onload = function () {
document.getElementById('loginbtn').onclick = login;
}
这里因为只有用户名和密码是敏感数据,需要保证它在传递给服务器时不被截获(即使截获也是加密的内容,无法破解),但返回的结果成功还是不成功并不是什么需要保密的数据,所以可以不加密。因此这里选择了单向加密传输。
大家也不必担心密钥是否会被截获,因为密钥是通过密钥交换算法,在服务器端和客户端(浏览器端)随机同步生成的,但没有经过网络传输,在网络上传输的是生成同步密钥的相关信息,但是只获取到这些信息是不足以算出密钥的,因此可以保证密钥的安全性。而加密算法本身也是一个强加密算法,密钥长度是 128 位,在没有密钥的情况下采用穷举法也是无法破解的。
大家会发现登录成功后,我们转向了 admin.php 页面,下面是这个页面的一个简单的例子:
PHP代码:
<?php
session_start();
if ($_SESSION['user'] == 'root') {
echo "登录成功!";
}
else {
header("Location: index.html");
}
?>
演示程序
实例下载
通过 PHPRPC,你不再需要为 Ajax 程序中数据的安全性而头痛,也不必为会话支持而苦恼,这一切 PHPRPC 都已经帮你自动完成了,你只需要关注具体的事务就可以了。用 PHPRPC 来做 Ajax 安全编程,就是这么简单!
[ 本帖最后由 andot 于 2006-6-7 17:17 编辑 ]
作者: andot 发布时间: 2006-06-07
作者: dashan 发布时间: 2006-06-14
作者: andot 发布时间: 2006-06-14
作者: forest 发布时间: 2006-06-15
作者: MySQL 发布时间: 2006-06-15
Fatal error: require_once() [function.require]: Failed opening required 'phprpc_server.php' (include_path='.;C:\php5\pear') in C:\AppServ\www\13-5.php on line 11
作者: andy 发布时间: 2006-07-13
作者: andot 发布时间: 2006-07-14
作者: andot 发布时间: 2006-07-16
作者: 天边云 发布时间: 2006-07-19
作者: ganshuhan 发布时间: 2006-12-15
作者: leehui1983 发布时间: 2006-12-15
作者: jefsun 发布时间: 2007-01-14

作者: 特蓝克斯 发布时间: 2007-01-14
作者: dzjzmj 发布时间: 2007-01-15
作者: smartkit 发布时间: 2007-01-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28