基于ThinkPHP3.23的简单ajax登陆案例
本文将给小伙伴们做一个基于ThinkPHP3.2.的简单ajax登陆demo。闲话不多说。直接进入正文吧。
可能有些小伙伴认为TP自带的跳转页面挺好,但是站在网站安全的角度来说,我们不应该让会员看到任何错误信息,或者可以暴露网站服务端信息的内容。TP的那个跳转页面太经典了。稍微了解框架的人看到那个页面,就知道你的网站是基于哪个框架构建的了。然后就对症下药开始找你站上的漏洞了。
在TP官网的讨论区看到不少小伙伴在使用TP3.2的ajax的时候遇到各种小问题,尝试着回答了几个,但是力不从心,发帖的人实在是有点多,所以呢,就简单的写一个demo吧。希望对小伙伴们有帮助。
这里,我们以TP3.23完整版为例,只修改'URL_MODE'为重写模式(完全是个人习惯,勿喷
),其他的保持默认即可。
第一步:我们先创建一个控制器:LoginController.class.PHP并定义视图。
namespace Home\Controller;
use Think\Controller; class LoginController extends Controller{ public function index(){ $this->display();
}
}
第二步:创建视图文件View/Login/index.html。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax登陆演示</title>
<script src="http://cdn.bootcss.com/jquery/1.10.1/jquery.min.js"></script>
</head>
<body>
<<fieldset>
<legend>登陆演示表单</legend>
<input type="text" name="uname" id="uname"><br>
<input type="password" name="upwd" id="upwd"><br>
<input type="submit" value="登陆" id="checkLogin">
</fieldset>
</body>
</html>
不知道大家注意到没有,我并没有写<form>标签,由于我们是ajax提交,所以这里的<form>标签留空,提交地址可以通过JavaScript指定。
第三步:接下来我们需要通过js做一个简单的表单验证,然后通过ajax提交到指定的url地址,并且通过接收返回来的值而执行不同的操作,具体代码如下,必要的地方我都有注释哦。
<script type="text/javascript">
$(function(){
$('#checkLogin').click(function(){
var $unameVal = $.trim($('#uname').val());
var $upwdVal = $.trim($('#upwd').val());
//如果没有填写数据,则直接返回false.不执行ajax提交操作
if($unameVal == '' || $upwdVal == ''){
alert('请输入用户民和密码');
return false;
}
/*
$.post(url,parameters,callback);
url : post提交的服务器端资源地址。
parameters: 需要传递到服务器端的参数。 参数形式为“键/值”。
callback : 在请求完成时被调用,这里我们通过$data来接收服务器返回的数据
*/
$.post('{:U('Login/checkLogin')}', {uname : $unameVal,upwd : $upwdVal},function($data) {
alert($data.info);
if($data.status == ){
location.href = $data.url;
}else{
$('#uname').reset();
$('#upwd').reset();
}
});
});
});
</script>
第四步:我们在LoginController.class.php中定义一个方法checkLogin()方法用来处理post过来的数据,并返回。
/*
* @param $uname string 接收到的用户名
* @param $upwd string 接收到的密码
* @return $data array 验证结果
* @author uctoo<uctoo@foxmail.com>
*/
public function checkLogin($uname,$upwd){
$data = array();
if(!empty($uname) && !empty($upwd)){
//1.这里的业务逻辑,小伙伴们自由发挥.我呢就简单的处理一下.只要接收到数据不为空,就表示成功.
//2.如果你觉得拼装数组比较麻烦,那么你可以将$this->success()或者$this->error中的第三个参数定义为true,即可返回json数据.例如:$this->success('登陆成功',U('User/index'),true).
//3.我个人倾向于拼装数组,主要原因是自己拼装的数组数据结构比较明了,方便阅读.
$data['status'] = ;
$data['info'] = '登陆成功';
$data['url'] = U('User/index');
}else{
$data['status'] = ;
$data['info'] = '用户名和密码不能为空';
$data['url'] = U('Login/index');
}
//通过ajaxReturn()方法返回我们之前生成的数组
$this->ajaxReturn($data);
}
附效果图一张:
基于ThinkPHP3.23的简单ajax登陆案例的更多相关文章
- 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行
[微信支付]分享一个失败的案例 2018-06-04 08:24 by stoneniqiu, 2744 阅读, 29 评论, 收藏, 编辑 这个项目是去年做的,开始客户还在推广,几个月后发现服务器已 ...
- 本博文将一步步带领你实现抽屉官网的各种功能:包括登陆、注册、发送邮箱验证码、登陆验证码、页面登陆验证、发布文章、上传图片、form验证、点赞、评论、文章分页处理以及基于tronado的后端和ajax的前端数据处理。
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tronado的后端和ajax的 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- 基于PHP实现一个简单的在线聊天功能(轮询ajax )
基于PHP实现一个简单的在线聊天功能(轮询ajax ) 一.总结 1.用的轮询ajax 二.基于PHP实现一个简单的在线聊天功能 一直很想试着做一做这个有意思的功能,感觉复杂的不是数据交互和表结构,麻 ...
- 基于Zookeeper的分步式队列系统集成案例
基于Zookeeper的分步式队列系统集成案例 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, ...
- 基于thinkphp3.2.3开发的CMS内容管理系统(二)- Rbac用户权限
基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --商品管理 --用户管理 --角色管理 --权限管理 --友情链接管 ...
- (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习
ThinkPHP作为国内具有代表性的PHP框架,经过多年的发展,受到越来越多公司与开发者的青睐.我也在忙里偷闲中抽出部分时间,来学习这个优秀的框架.在开始学习这个框架时,最好通过实例来学习,更容易结合 ...
- jQuery中的ajax用法案例
什么是 AJAX? AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML). 简短地说,在不重载整个网页的情况下,AJAX 通过后台加载 ...
- Ajax登陆,使用Spring Security缓存跳转到登陆前的链接
Spring Security缓存的应用之登陆后跳转到登录前源地址 什么意思? 用户访问网站,打开了一个链接:(origin url)起源链接 请求发送给服务器,服务器判断用户请求了受保护的资源. 由 ...
随机推荐
- 使用 WinDbg 分析dump文件
步骤一: 生成dump文件. #include <Windows.h> #include <iostream> #include <DbgHelp.h> #incl ...
- Java如何使用finally块来捕捉异常?
在Java编程中,如何使用finally块来捕捉异常? 此示例显示如何使用finally块来通过使用e.getMessage()捕获运行时异常(Illegalargumentexception). p ...
- Swing用于开发Java应用程序用户界面
Swing是一个用于开发Java应用程序用户界面的开发工具包. 以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格. Swing开发人员只用很少的代码就可以利用Swing丰富 ...
- ARM mbed平台WIZwiki-W7500使用说明
ARM mbed IDE 是ARM内核微控制器的在线开发工具,其站点是:http://developer.mbed.org. 站点提供了在线编译器,不须要本地安装编译器就可以进行开发,因此没有地点.时 ...
- 制作CentOS fence-agents 镜像
1, Download centos7 iso file: Centos7 ISO download: http://buildlogs.centos.org/rolling/7/isos/x86_6 ...
- 每天一个linux命令:ifconfig命令 临时修改重启后恢复原样
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- PHP内置函数生成随机数的方法汇总
PHP内部生成随机数的方法相比其他方法简单,不需要额外配置,是生成随机数的首选方案. 1 rand函数 rand() 函数可以不加任何参数,就可以生成随机整数.如果要设置随机数范围,可以在函数中设置 ...
- phd文献阅读日志-博一下学期
博一下学期: 1.week1,2018.2.26 2006-Extreme learning machine: theory and applications 期刊来源:Huang G B, Zhu ...
- service citrix xcenserver health check service (xenserver healthcheck) failed to start verfy that you have sufficient privileges to srart system services
citrix XcenServer版本:7.2 citrix Xcencenter版本:7.2 安装citrix Xcencenter的时候报错: service citrix xcenserver ...
- EJB里的问题解答
1.什么是EJB? EJB即Enterprise JavaBean是JavaEE应用的业务层技术标准,以这项技术开发的组件叫做EJB组件. EJB架构师一个用于开发和部署基于组件的分布式业务应用的组件 ...