extJS4.2+TP3.2实现登陆验证功能
管理员 发布于 6年前   410
Ext JS 是一个流行的JavaScript框架,它为使用跨浏览器功能构建Web应用程序提供了丰富的UI。
基本上用于创建桌面应用程序它支持所有现代浏览器,如IE6 +,FF,Chrome,safari 6+ 等。
基于MVC / MVVM架构。 最新版本的Ext JS 6是一个单一的平台,可以用于桌面和移动应用程序。
准备工作:1.下载框架 ext-4.2.1-gpl.zip
2.tp3.2.3
前端: 1.引入 2.生成页面 前端: 1.引入 <link href="/tp5blog/public/static/ext42/resources/css/ext-all-neptune.css"rel="stylesheet"/> <script src="/tp5blog/public/static/ext42/bootstrap.js"></script> <script src="/tp5blog/public/static/ext42/locale/ext-lang-zh_CN.js"></script> 2.生成页面 <script type="text/javascript"> //定义验证码控件 Ext.define('CheckCode',{ extend: 'Ext.form.field.Text', alias: 'widget.checkcode', inputTyle:'codefield', codeUrl:Ext.BLANK_IMAGE_URL, isLoader:true, onRender:function(ct,position){ this.callParent(arguments); this.codeEl = ct.createChild({ tag: 'img', src: Ext.BLANK_IMAGE_URL}); this.codeEl.addCls('x-form-code'); this.codeEl.on('click', this.loadCodeImg, this); if (this.isLoader) this.loadCodeImg(); }, alignErrorIcon: function() { this.errorIcon.alignTo(this.codeEl, 'tl-tr', [2, 0]); }, //如果浏览器发现url不变,就认为图片没有改变,就会使用缓存中的图片, //而不是重新向服务器请求,所以需要加一个参数(如:Math.random()),改变url loadCodeImg: function() { this.codeEl.addCls('x-form-codes'); this.codeEl.set({ src: '{:U('index/verify')}'+'?id=' + Math.random() }); } }); Ext.onReady(function(){ var checkcode = Ext.create('CheckCode',{ fieldCls : 'checkcode-ico', fieldLabel : '验证码', name : 'verify', id : 'verify', allowBlank : false, isLoader:true, blankText : '请输入验证码', emptyText: '请输入验证码', codeUrl: 'getCode', }); Ext.create('Ext.window.Window', { title: '用户登录', draggable: false, closable: false, resizable : false, layout: 'fit', items: { xtype: 'form', id: 'loginform', bodyPadding : 20, defaultType: 'textfield', shrinkWrap: 3, bodyCls: 'loginformbg', fieldDefaults: { allowBlank: false, labelAlign: 'center', labelWidth: 50, labelSeparator: '', vtype : 'alphanum', vtypeText : '只能是数字或字母' }, items: [{ fieldLabel: '用户名', name: 'username', id:'username', emptyText: '请输入用户名', fieldCls: 'username-ico' }, { fieldLabel: '密 码', name: 'password', id:'password', emptyText: '请输入密码', inputType: 'password', fieldCls: 'userpassword-ico' }, checkcode] }, buttons: [ { text: '登录', iconCls: 'Doorin', id: 'loginbtn', handler: function(){ //得到form var basic = Ext.getCmp('loginform'); if (basic.isValid()) { basic.submit({ waitMsg: '正在登录,请等待...', clientValidation: true,//要经过客户端验证的 url: '{:U('login')}', method: 'POST', success: function(form, action){ Ext.Msg.alert('提示', '登录成功,页面正在跳转……'); window.location.href=action.result.url; }, failure: function(form, action){ Ext.Msg.alert('提示', action.result.msg, function(){ basic.reset(); Ext.getCmp('verify').loadCodeImg(); Ext.getCmp('username').focus(); }); } }); } } } ], buttonAlign : 'center', listeners: { afterRender: function(thisForm, options){ this.keyNav = Ext.create('Ext.util.KeyNav', this.el, { enter: function(){ var btn = Ext.getCmp('loginbtn'); btn.handler(); }, scope: this }); } } }).show(); }); </script>
效果:
后台: 1.方法 public function index() { if (IS_POST) { $username = I("post.username"); $password = md5(I("post.password")); $code = I("post.verify"); $verify = new \Think\Verify(); if(!$verify->check($code,$id = '')){ $arr = array('success'=>false,'msg'=>'验证码错误'); $this->ajaxReturn($arr); } $res = M('user')->where(['username'=>$username,'password'=>$password])->find(); if ($res) { $arr = array('success'=>true,'msg'=>'登陆成功'); $this->ajaxReturn($arr); }else { $arr = array('success'=>false,'msg'=>'账号密码错误'); $this->ajaxReturn($arr); } }else { $this->display(); } } //生成验证码 public function verify(){ $verify = new \Think\Verify(); $verify->fontSize = 16; $verify->length = 3; $verify->useNoise = false; $verify->entry(); }
效果:
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
该博客于2020-12-7日,后端基于go语言的beego框架开发
前端页面使用Bootstrap可视化布局系统自动生成
是我仿的原来我的TP5框架写的博客,比较粗糙,底下是入口
侯体宗的博客
文章标签
友情链接