Foro

[Ayuda]-ExtJS con Captcha

0
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.
0
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
0
<!-- 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.
0
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 -->
0
Bueno Gracias x responder mi pregunta....pero creo q mejor seria si siguo el LOGIN pero sin captcha.... Saludos

¿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.