用 PHPRPC 实现 Ajax 安全登录
昨天我举了个 用 PHPRPC 实现 Ajax 级联下拉菜单 的例子,那个例子中我们重点要演示的是用 PHPRPC 实现 Ajax 效果是多么的简单。今天我们这个例子主要演示用 PHPRPC 内置的安全加密机制来实现安全登录是多么简单。当然它同样可以用于密码设置、其它关键保密数据的传输等领域。
这个例子比昨天的例子还要简单,先来看服务器端:
<?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'));
?>
这段代码太简单了,我不需要多说什么大家也能够看明白。不过大家会发现,在 login 函数中我用了 $_SESSION 变量,但是并没有在什么位置上写 session_start(),原因在于建立加密连接时,已经自动调用了 session_start(),因此不需要再单独写 session_start() 了。为了验证它是否生效,我们在后面的另一个页面中(admin.php),将判断这里设置的 $_SESSION 变量,并根据它来报告登录成功或者没成功跳回到登录页面。
那再来看看客户端,客户端我们将 JavaScript 跟 HTML 分离了,先来看看 html 页面。
这个页面很简单,只是设置好了表单输入框和按钮,所有的处理都是在 login.js 中完成的。不过需要注意的是这里的 phprpc_client.js 是 full 压缩版本,因为我们需要用到它的加密传输功能。我们来看看 login.js 是怎么写的。
大家会发现除了在调用 use_service 时,设置了第二个参数为 true 外,还在调用服务器端的 login 函数前,设置了 rpc.encrypt 的值为 1,这里 1 表示单向加密传输,单向加密传输是指调用的参数会以加密的方式传给服务器,但是返回的结果不加密(如果参数是引用参数的话,参数返回时也是加密的)。如果 rpc.encrypt 的值为 0,则表示不加密;如果是 2,则表示双向加密。
这里因为只有用户名和密码是敏感数据,需要保证它在传递给服务器时不被截获(即使截获也是加密的内容,无法破解),但返回的结果成功还是不成功并不是什么需要保密的数据,所以可以不加密。因此这里选择了单向加密传输。
大家也不必担心密钥是否会被截获,因为密钥是通过密钥交换算法,在服务器端和客户端(浏览器端)随机同步生成的,但没有经过网络传输,在网络上传输的是生成同步密钥的相关信息,但是只获取到这些信息是不足以算出密钥的,因此可以保证密钥的安全性。而加密算法本身也是一个强加密算法,密钥长度是 128 位,在没有密钥的情况下采用穷举法也是无法破解的。
大家会发现登录成功后,我们转向了 admin.php 页面,下面是这个页面的一个简单的例子:
<?php
session_start();
if ($_SESSION['user'] == 'root') {
echo "登录成功!";
}
else {
header("Location: index.html");
}
?>
这里需要自己 sestion_start() 一下了,之后就可以验证 $_SESSION['user'] 是否设置了。
演示程序
实例下载
通过 PHPRPC,你不再需要为 Ajax 程序中数据的安全性而头痛,也不必为会话支持而苦恼,这一切 PHPRPC 都已经帮你自动完成了,你只需要关注具体的事务就可以了。用 PHPRPC 来做 Ajax 安全编程,就是这么简单!
用 PHPRPC 实现 Ajax 安全登录相关推荐
- ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...
ajax用户登录验证: 实例 html> Ajax实战:表单验证 用户登录 邮箱: 密码: 提交 let btn = document.getElementsByTagName('button' ...
- php ajax loading图片居中显示,PHP语言入门之PHP+ajax实现登录按钮加载loading效果
本篇教程探讨了PHP语言入门之PHP+ajax实现登录按钮加载loading效果,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < php+ajax实现登录按钮加载loa ...
- ajax实现登录页面跳转,Ajax登录功能实现
一:Ajax是什么? Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用 ...
- 用ajax实现登陆验证,ajax异步登录验证实现
如何用ajax异步登录验证实现? ajax异步无刷新登陆实现分为四步: class="fe_text jsv_required js_has_dval" title=请输入用户名 ...
- ajax用户登录模块,ajax用户注册模块
ajax用户注册模块 内容精选 换一换 用户输入码流给VDEC解码,某些帧或所有帧都没有触发回调函数,用户收不到解码结果.码流中某些帧是坏帧,导致语法解析不出这些帧的含义,或者解码这些帧失败,从而不调 ...
- Django+Jquery+Ajax+验证码登录案例
1,创建项目test04 2,创建应用app为booktest 3,注册应用booktest 作用让创建的应用运行起来 4,在项目根目录下创建模板templates目录 作用就是存放html文件 在项 ...
- MVC3学习:利用mvc3+ajax实现登录
用到的工具或技术:vs2010,EF code first,JQuery ajax,mvc3. 第一步:准备数据库. 利用EF code first,先写实体类,然后根据实体类自动创建数据库:或者先创 ...
- 如何使用Bootstrap Modal和jQuery AJAX创建登录功能
by Yogi 由瑜伽士 Bootstrap Modal is an excellent way to create a Login form on your website. In this tut ...
- php登陆+链接+验证,php+ajax验证登录跳转登录的实现方法
这篇文章主要介绍了php+ajax登录跳转登录实现思路,非常的简单,有需要的小伙伴可以参考下 当我们的用户进行系统登录时,用户名和密码的验证都是后端验证的.而且,用户登录状态也是要后端设置的,查询数据 ...
最新文章
- Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等 (转载)
- 中科微研携手-农业大健康·李喜贵:从玉农业谋定功能性农业
- PHP学习总结(正则表达式、日期与时间)
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面
- 系统会自带java吗_使用eclipse自带制作帮助系统
- 初学python之路-day04
- linux 大数字 进制转换,Linux下用bc快速进行数字进制转换
- python threading之条件变量同步(condition)
- Mybatis的pooled连接池工作原理
- SyncToy 文件同步工具的定时同步方案(不使用第三方软件)
- Android 角标设置
- 115CSS3+JS:胶卷式放映
- CTF_EXP01:BugkuCTF 秋名山老司机
- 2023年全国最新二级建造师精选真题及答案44
- 可口可乐、百事可乐都使用的包装黑科技,你Get到了吗?
- 开发一个从磁力链取得影片截图的命令行工具
- 微信小程序开发实验2
- ExtJS快速入门学习指南
- 【STM32F10系列实操笔记】系统时钟的配置
- 【springboot+vue项目学习】3引入element-ui插件