Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Logear en página SELF

Estas en el tema de Logear en página SELF en el foro de Frameworks JS en Foros del Web. Hola colegas, bueno... ya uso el Prototype por bastante tiempo y ya tengo una forma de logearme usando el framwork pero se me dá la ...
  #1 (permalink)  
Antiguo 23/04/2010, 10:13
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Logear en página SELF

Hola colegas, bueno... ya uso el Prototype por bastante tiempo y ya tengo una forma de logearme usando el framwork pero se me dá la necesidad de poder logearme en la página que estoy visitando actualmente y espero me púedan ayudar con la solución...

En la página de servidor (php) mando el response para dar la instrucción a mi funcion ajax que se redirija la página una vez logeado:

Código PHP:
switch ($existe_Usuario) {
    case 
0:
        echo 
"* ERROR: No existe el usuario.";
        break;
    case 
1:
        echo 
"success";/*logeo con exito*/
        
break;
    case 
2:
        echo 
"ERROR: El usuario no tiene permiso para acceder";
        break;

Y en mi función ajax pregunto si el response es "success" que significa que logeo bien y me redirije a la página por defecto que es el index

Código:
function sendLogin() {
new Ajax.Request("sesion_pro.php",
{
method: 'post',
parameters: 'usuario='+$F('usuario')+'&password='+$F('password'),
onCreate : function startLoading() {
    		$('cmsmensajeup').innerHTML= '<img src="images/sending.gif" />';
			Form.Element.disable("Envia");
			},
onComplete: function showResponse(req){
			$('cmsmensajeup').innerHTML = '';
			Form.Element.enable("Envia");
				if(req.responseText == "success") {
					window.location ='index.php'; 
				}else{
					alert(req.responseText);
				}
			}
});
}

Pero esto es un fastidio para el visitante por ejemplo estoy en una pagina "productos" me logeo y se va al "index" lo que deseo es que al logear se vaya a la página de donde me he logeado.

Pienso en enviar el $_SERVER['PHP_SELF'] desde el formulario y enviar esto y el 'success' como array... pero no sé como recibir ese array en javascript para separar el succes y el nombre de la página para hacer el location...
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 28/04/2010, 08:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Logear en página SELF

Lo que puedes hacer es lo siguiente. No lo he probado pero podría ser algo del estilo:

Código PHP:
switch ($existe_Usuario) {
    case 
0:
        echo 
"* ERROR: No existe el usuario.";
        break;
    case 
1:
        echo 
"/pagina/a/la/que/redirijo.php";/*logeo con exito*/
        
break;
    case 
2:
        echo 
"ERROR: El usuario no tiene permiso para acceder";
        break;

Y en el JS:

Código:
function sendLogin() {
new Ajax.Request("sesion_pro.php",
{
method: 'post',
parameters: 'usuario='+$F('usuario')+'&password='+$F('password'),
onCreate : function startLoading() {
    		$('cmsmensajeup').innerHTML= '<img src="images/sending.gif" />';
			Form.Element.disable("Envia");
			},
onComplete: function showResponse(req){
			$('cmsmensajeup').innerHTML = '';
			Form.Element.enable("Envia");
				if(req.responseText.match("/")) {
					window.location =req.responseText; 
				}else{
					alert(req.responseText);
				}
			}
});
}
Es decir, si encuentra una "/" en lo que le envías (que en este caso significa que le estás pasando una ruta y no un error) pues te lleva ahí...

Espero haber respondido a tu pregunta.

EDITO:
Si el usuario llega a una página a la que no tiene permisos. Deberías guardar la ruta en una variable de sesión:
Código PHP:
$_SESSION['nexturl']=$_SERVER['REQUEST_URI']; 
Y en el Switch preguntas:
Código PHP:
switch ($existe_Usuario) {
    case 
0:
        echo 
"* ERROR: No existe el usuario.";
        break;
    case 
1:
        if(isset(
$_SESSION['nexturl']) echo $_SESSION['nexturl'];
        else echo 
"/pagina/a/la/que/redirijo.php";/*logeo con exito*/
        
unset($_SESSION['nexturl']);
        break;
    case 
2:
        echo 
"ERROR: El usuario no tiene permiso para acceder";
        break;


Última edición por Sancas; 28/04/2010 a las 08:28
  #3 (permalink)  
Antiguo 28/04/2010, 17:38
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Logear en página SELF

gracias por responder... voy a probar la solución... aunque ya había encontrado una con JS:

Código:
function sendLogin() {
new Ajax.Request("sesion_pro.php",
{
method: 'post',
parameters: 'usuario='+$F('usuario')+'&password='+$F('password'),
onCreate : function startLoading() {
    		$('cmsmensajeup').innerHTML= '<img src="images/sending.gif" />';
			Form.Element.disable("Envia");
			},
onComplete: function showResponse(req){
			$('cmsmensajeup').innerHTML = '';
			Form.Element.enable("Envia");
				if(req.responseText == "success") {
					/*entramos al self de donde nos logeamos*/
					var Ruta = window.location.pathname;
					var Pagina = Ruta.substring(Ruta.lastIndexOf('\\') + 1);
					var Pagina = Ruta.substring(Ruta.lastIndexOf('/') + 1);
					window.location = Pagina;
				}else{
					alert(req.responseText);
				}
			}
});
}
__________________
Quitenme la vida pero no la bebida.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:29.