[Ayuda]-ExtJS con Captcha
Hola Bueno tengo problemas con este login ... ya q kiero implementarlo con el SQL 2000 hacer un login para q tambien valide el captcha..
Este es el Login.php sin onexion..
<?php session_start(); $task = $_POST['task']; $result = '{success:false,msg:"Error Server"}'; if($task == "login") { $user = $_POST['user']; $pass = $_POST['pass']; $code = $_POST['code']; if(isMemberExist($user)){ $result = '{success:false,errors:{id:"user",msg:"Error User"}}'; } else if(isPasswordMatch($user,$pass)){ $result = '{success:false,errors:{id:"pass",msg:"Error Clave"}}'; } else if(isCodeMatch($code)){ $result = '{success:false,errors:{id:"code",msg:"Erro Captcha"}}'; } else if($user=="xxxx" && $pass=="xxxx" && $code == $_SESSION['security_code']){ $result = '{success:true,msg:"Login Bien"}'; } else $result = '{success:false,msg:"Login Mal"}'; } echo $result; function isMemberExist($user) { return $user!="demo"; } function isPasswordMatch($user,$pass) { return $pass!="demo"; } function isCodeMatch($code) { return $code != $_SESSION['security_code']; } ?>como veran el codigo de arriba ... funciona bien.. pero son datos predefinidos... osea la ceutna seria demo & demo.. En cambio aqui queria conectar a una BD del SQL pero nada... Este es el Login.php supuestamente con conexion..
<?php session_start(); $conection = mssql_connect("SERVER","sa","123456") or die("no se puede conectar a SQL Server"); mssql_select_db("OXMET",$conection); $SQL = "SELECT memb___id, memb__pwd FROM MEMB_INFO WHERE memb___id = '".$_POST["user"]."' AND memb__pwd = '".$_POST["pass"]."'"; $task = $_POST['task']; $result = mssql_query($SQL); if($task == "login") { $user = $_POST['user']; $pass = $_POST['pass']; $code = $_POST['code']; if(isMemberExist($user)){ $result = '{success:false,errors:{id:"user",msg:"User Error"}}'; } else if(isPasswordMatch($user,$pass)){ $result = '{success:false,errors:{id:"pass",msg:"Clave Error"}}'; } else if(isCodeMatch($code)){ $result = '{success:false,errors:{id:"code",msg:"Captcha Error"}}'; } else if( $code == $_SESSION['security_code']){ $_SESSION['user'] = $user; $result = '{success:true,msg:"ok"}'; } else $result = '{success:false,msg:"mal"}'; } echo $result; function isMemberExist($user) { return $user!=$_SESSION['user']; } function isPasswordMatch($user,$pass) { return $pass!=$_SESSION['pass']; } function isCodeMatch($code) { return $code != $_SESSION['security_code']; } ?>y por las dudas este es el JS del login...
Ext.SSL_SECURE_URL="resources/images/default/s.gif"; Ext.BLANK_IMAGE_URL="resources/images/default/s.gif"; LoginWindow = function (config) { this.width = 520; this.height = 330; this.closable = false; this.title = "Login"; Ext.apply(this,config); LoginWindow.superclass.constructor.call(this); } Ext.extend(LoginWindow,Ext.Window,{ onActionComplete : function (f, a){ if(a && a.result && a.result.success){ var path = window.location.pathname, path = path.substring(0, path.lastIndexOf('/') + 1); alert(a.result.msg); window.location = path; window.location.reload( false ); } }, onActionFailed : function(f,a){ this.onCapthaChange(); var form = this.loginPanel.getForm(); alert(a.result.errors.msg); if (a.result.errors.id){ var f = form.findField(a.result.errors.id); if(f){ f.focus(); } } }, onCapthaChange : function(){ var captchaURL = this.captchaURL; var curr = Ext.get('activateCodeImg'); curr.slideOut('b', {callback: function(){ Ext.get( 'activateCodeImg' ).dom.src= captchaURL+new Date().getTime(); curr.slideIn('t'); }},this); }, initComponent : function () { this.submitUrl = "login.php"; this.captchaURL = "captcha/CaptchaSecurityImages.php?width=160&height=80&characters=4&t="; var boxCaptcha = new Ext.BoxComponent({ columnWidth:.35, autoEl: { tag:'img' ,id: 'activateCodeImg' ,title : 'Click to refresh code' ,src:this.captchaURL+new Date().getTime() } ,listeners : { 'click' : function () { alert('test'); } } }); boxCaptcha.on('render',function (){ var curr = Ext.get('activateCodeImg'); curr.on('click',this.onCapthaChange,this); },this); this.loginPanel = new Ext.form.FormPanel({ frame:true, height: 100, region : 'center', id: 'loginpanel', baseParams : { task : 'login' }, bodyStyle:'padding:10px', buttons : [ { text : 'Submit', handler: onSubmit } , { text : 'Cancel', handler : Ext.emptyFn } ], items: [ { layout : 'column', items : [ { layout : 'form', columnWidth:.65, layoutConfig: { labelSeparator: '' } ,items : [ { fieldLabel: 'User ', name: 'user', xtype : 'textfield', value: 'demo' ,anchor:'90%' }, { fieldLabel: 'Password ', xtype : 'textfield', inputType: 'password', name: 'pass', value : 'demo', anchor:'90%' } , { fieldLabel: 'Security Code ', name: 'code', xtype : 'textfield' ,anchor:'90%' } ] } ,boxCaptcha ] } ] ,listeners: { 'actioncomplete': { fn: this.onActionComplete, scope: this }, 'actionfailed': { fn: this.onActionFailed, scope: this } } ,url: this.submitUrl }); var form = this.loginPanel.getForm(); function onSubmit() { form.submit({ reset : true }); }; this.layout = "border"; this.items = [ { xtype:'panel', html : 'Logo', region : 'north', height: 140 }, this.loginPanel ]; LoginWindow.superclass.initComponent.call(this); } }); Ext.onReady(function () { var loginwindow = new LoginWindow(); loginwindow.show(); });Ayudemen porfavor... quisiera un login con el captcha y oviamente con las sesiones... del SQL Muchas Gracias.
pues... no veo por ningú lado en tu PHP que ejecutes el SQL, por otro lado nunca, nunca, pero nunca le pongas las variales $_POST dentro de tu SQL, ya que al hacer eso te harán un SQL INJECTION, primero limpia tu entrada y luego genera el SQL, luego ejecutalo y saca los resultados para que puedas hacer las comparaciones.
saludos
<!-- s:? --><!-- s:? --> Si me pudieras ayudar mas..es q yo se hacerlo con el mysql..pero a veces tengo problemas co nel SQL como en este caso... ya q tengo un login sin captcha de ext pero keria implementar el captcha.....
Espero su pronta respuesta..
Muchas Gracias.
utiliza la función "mssql_query" para ejecutar el query.
Checa el siguiente link donde vienen ejemplos
<!-- m -->http://php.net/manual/en/book.mssql.php<!-- m -->
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.