Results 1 to 2 of 2

Thread: Problemas para guardar y validar

  1. #1
    Sencha User
    Join Date
    Sep 2007
    Posts
    12

    Default Problemas para guardar y validar

    Estoy tratando de implementar un sistema de autentificacion de la siguiente manera:

    Archivo: index.html

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento sin t&iacute;tulo</title>
    
    <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>
    
    <style rel="stylesheet" type="text/css">
    	.panel-items{margin:10px;}
    </style>
    
    <!-- LIBS -->
        <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
    <!-- ENDLIBS -->
    
    <script type="text/javascript" src="../../ext-all.js"></script>
    
     <!-- application -->
        <script type="text/javascript" src="index.js"></script>
    
    </head>
    
    <body>
    </body>
    </html>

    Archivo: index.js
    (Donde se encuentra el formulario de login)

    Code:
    Ext.onReady(function(){
    
    Ext.QuickTips.init();
    // turn on validation errors beside the field globally
    Ext.form.Field.prototype.msgTarget = 'side';
    					 
        var login = new Ext.FormPanel({
            labelWidth:80,
            frame:true,
            title:'Restricted access',
            width:300,
            default:{autoHeight:true},
            defaultType:'textfield',
    
            items:[{
                    fieldLabel:'username',
                    name:'user',
                    allowBlank:false,
                },{
                    fieldLabel:'password',
                    name:'pass',
                    inputType:'password',
                    allowBlank:false,
                }],
            buttons:[{
                    text:'Login',
                    handler:function(){
                        login.getForm().submit({
                            method:'POST',
                            waitTitle:'Connecting',
                            waitMsg:'Sending data...',
                            url:'autentificacion.php',
                            success:function(){
    			var url = 'main.html';							
    			window.location = url;
                            },
                            failure:function(form, action){
                                if(action.failureType == 'server'){
                                    obj = Ext.util.JSON.decode(action.response.responseText);
                                    Ext.Msg.alert('Oops!', obj.errors.reason);
                                }else{
                                    Ext.Msg.alert('Oops!', 'Authentication server is unreachable');
                                }
                                login.getForm().reset();
                            },
                        });
                    },
                }],
        });
    
        login.render(document.body);
    });

    Y el archivo PHP que verifica los datos
    Archivo: autentificacion.php

    PHP Code:
    <?php
    require_once("json.php");

    $json = new Services_JSON();

    if(
    $_POST["user"]=="admin" && $_POST["pass"]=="admin"){
        
    $return "{success: true}";
        return 
    $json->encode($return);    
        
    }
    else if (
    $_POST["user"]!="admin" && $_POST["pass"]!="admin"){
        
    $return "{success: false, errors:[{reason:'Datos incorrectos'}]}";
        return 
    $json->encode($return);        
    }
    ?>
    Realmente este ejemplo lo vi en este foro. En lugar de PHP usan CGI. Lo que no entiendo es como hacer que por ejemplo cuando el nombre de usuario o la contrase

  2. #2
    Sencha Premium Member cmendez21's Avatar
    Join Date
    Jun 2007
    Location
    Mexico D.F.
    Posts
    486

    Default

    hola , a ver si te sirve esto

    Yo lo que haria en el boton de login seria esto:

    HTML Code:
    	    buttons: [{
                text: 'Login',
    			id: 'btnlogin',
    			tooltip:'Login de usuario....!',
    			handler:loginform
            }
    y en la rutina de

    HTML Code:
    function loginform(){
    	var prueba  = login .form; 
    	if (prueba.isValid()) {
    		prueba.submit({
    			waitTitle:'Procesando informacion' ,
    			waitMsg:'verificando usuario...',
    			params:{
    				method:'POST'
    			},
    			success: function(prueba, action) {
    				Ext.MessageBox.alert('Acceso permitido', 'Datos procesados exitosamente...!' + action.result.prueba);
                                    if  (action.success){
                                       // accion a realizar
                                   } else { 
                                          Ext.MessageBox.alert('Acceso no permitido', 'verifique su cuenta...!' + action.result.prueba);
                                   } 
    			}, 
    			failure: function(prueba, action){
    				Ext.MessageBox.alert('Error', 'Verifique la informacion...! - ' +  action.result.errors );					
    			}
    		});	
    	}else{
    		Ext.MessageBox.alert('Atencion...!', 'Errores en los datos.');
    	}
    } 
    esto por que no estas validando la forma con EXTjs para checar q los campos tengan valor

    var prueba = login .form;
    if (prueba.isValid()) {

    y aparte siempre t lleva a index.html por que la llamada fue exitosa pero de la respuesta del AJAX request o sea que si se pudo establecer comunicacion con la pagina no el hecho de que la respuesta de JSON diga success:true

    espero que te sirva
    Last edited by cmendez21; 9 Feb 2008 at 11:40 AM. Reason: correcting data

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •