entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Pagina de Login y Registro

Hola
Esta pregunta es un tanto complicada, asi que lean con detenimiento:
Estoy creando una pagina de ingreso de usuario y de registro de usuarios nuevos. ambas son dos paginas diferentes pero el contenido del formulario de ingreso de usuario y contraseña es el mismo en ambas. el unico cambio es el nombre del formulario es diferente (form1, form2)

<form name="form1" id="form1" method="post" action="">
    <input type="text" name="user" id="user" value="" required placeholder="Digite Usuarioi">
    <input type="password" name="cont" id="cont" value="" required placeholder="Digite Contraseña">
    <input type="submit" name="envia" value="Enviar" data-icon="check">
</form> 

este es el javascript del ingreso de usuario:

$(document).ready(function()
{
    $("#form1").submit(function()
    {

        $.post("clases/validacion.php",{ user:$('#user').val(),cont:$('#cont').val(),rand:Math.random() } ,function(data)
        {
        if(data=='admin') 
        {
            document.location='rol1.php';
        }
        else if(data=='user')
        {
            document.location='rol2.php';
        }
        else if(data=='error')
        {
            $("#user").val("");
            $("#cont").val("");
            $.mobile.changePage('#pageError', 'pop', true, true);
        }
        });
        return false; 
    });

    $("#cont").blur(function()
    {
        $("#form1").trigger('submit');
    });
});

este es el javascript de registro de usuario nuevo:

$(document).ready(function()
{
    $("#form2").submit(function()
    {
        $.post("clases/validacion.php",{ user:$('#user').val(),cont:$('#cont').val(),rand:Math.random() } ,function(data)
        {
        if(data=='yes') 
        {
            $.mobile.changePage('#pageError', 'pop', true, true);
            return false;

        }
        else if(data=='no')
        {
            $.mobile.changePage('#correcto', 'pop', true, true);
        }

        });
        return false; 
    });

    $("#cont").blur(function()
    {
        $("#form2").trigger('submit');
    });
});

En mi opinion la parte que no me esta funcionando es la parte que viene a continuacion
En definitiva, las partes que me dan problemas son las de validarPersona() y NuevaPersona(). cada una por separado hace la funcion que deberian, pero al colocarlas juntas no me funcioanan. Lo que requiero es que si estoy dentro de la pagina de ingreso de usuario (index.php) solo se cargue $obj->ValidarPersona();
pero si estoy en ingreso de usuario nuevo (nuevou.php), solo se cargue
$obj->NuevaPersona();

ya he probado con un condicional usando $_SERVER['PHP_SELF'], para que me diga en que pagina estoy de esta manera

if(isset($_POST['user'])&&isset($_POST['cont'])){
        $obj=new validacion();
        $obj->setusuario(htmlspecialchars($_POST['user']));
        $obj->setcontrasena(md5($_POST['cont']));
        if($_SERVER['PHP_SELF']=="index.php"){
        $obj->ValidarPersona(); 
        }else{
        $obj->NuevaPersona(); 
    }  }

y tambien agregando una variable al inicio de cada pagina que sea $pagina ="index";

 if(isset($_POST['user'])&&isset($_POST['cont'])){
            $obj=new validacion();
            $obj->setusuario(htmlspecialchars($_POST['user']));
            $obj->setcontrasena(md5($_POST['cont']));
            if($pagina ="index"){
            $obj->ValidarPersona(); 
            }else{
            $obj->NuevaPersona(); 
        }  }

Pero no funciona, Ayuda Por Favor !!!!!!

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola,

no te funciona el condicional para mostrar ValidarPersona() o NuevaPersona() porque estás llamando al código desde AJAX y por lo tanto $_SERVER['PHP_SELF'] valdrá siempre el nombre del script que contiene este código y no el del llamador: "clases/validacion.php"

Por lo mismo, la variable $pagina no está disponible, porque es una variable de otro script.

Esto funcionaría si en vez de llamar al código vía AJAX lo tuvieras en un include() las páginas que lo usan.

Lo podrías solucionar enviando un parámetros más a llamada, como por ejemplo "pagina", para que tengas un valor que te permita determinar qué método llamar:

...
$.post("clases/validacion.php",{ user:$('#user').val(),cont:$('#cont').val(),rand:Math.random(),pagina:'login' } ,function(data)
...

y en el código PHP:

 if(isset($_POST['user'])&&isset($_POST['cont'])){
            $obj=new validacion();
            $obj->setusuario(htmlspecialchars($_POST['user']));
            $obj->setcontrasena(md5($_POST['cont']));
            if($_POST['pagina'] ="login"){
            $obj->ValidarPersona(); 
            }else{
            $obj->NuevaPersona(); 
        }  }

Saludos!

0voto

ingadad_adading comentado

Como siempre leonardo tu respuesta fue la mejor. muchas gracias

1voto

mrczrt Puntos6940

Hola puedes usar también $_SERVER['HTTP_REFERER'] para determinar de que pagina es la llamada.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta