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

me pueden decir que tiene de malo este codigo

Estas en el tema de me pueden decir que tiene de malo este codigo en el foro de Frameworks JS en Foros del Web. holas.. es simple.. es un login... al ingresarel login y password se revisa con php si es correcto redirecciona si no muestra en pantalla sin ...
  #1 (permalink)  
Antiguo 03/09/2007, 02:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
me pueden decir que tiene de malo este codigo

holas.. es simple.. es un login... al ingresarel login y password se revisa con php si es correcto redirecciona si no muestra en pantalla sin recargar la pagina un mensaje de error... el codigo


ajax:

Código:
var ajax=nuevoAjax();
		ajax.open('POST', 'ingresa.php', true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("login="+login+"&pass="+pass);
		
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==4)
			{
				var respuesta= ajax.responseText;
				if(respuesta=="OK")
				{
					var texto="Bienvenido.<br>Redireccionando.<br><br><button onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
				}
				if(respuesta=="error1")
				{
					var texto="Error: La contraseña no fue enviada.<br><br><button onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
				}
				if(respuesta=="error2")
				{
					var texto="Error: La contraseña no es válida.<br><br><button onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
				}
			else
				 var texto= Error: A ocurrido un problema, vuelva a intentarlo mas tarde.<br><br><button onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
				
				muestraMensaje(texto);
			}
		}
ingresa.php:

Código:
<script language="php">
include("coneccion.php"); 
if($_POST)
{
foreach($_POST as $clave => $valor) $$clave=addslashes(trim(utf8_decode($valor)));
	sleep(5);
	
$username=$_POST['login'];
$pass=$_POST['pass'];
$password= md5($pass); 

if ($password==NULL) {
echo "error1"; // password no enviada
}
else{
$query = mysql_query("SELECT login_user,password FROM usuarios WHERE login_user = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "error2"; //password incorrecto
}
else{
$query = mysql_query("SELECT login_user,tipo_usuario,nombres,apellido_paterno,password FROM usuarios WHERE login_user = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_login"] = $row['login_user'];
$_SESSION["s_tipo"] = $row['tipo_usuario'];
$_SESSION["s_nombre"] = $row['nombres'];
$_SESSION["s_apellidop"] = $row['apellido_paterno'];
echo "OK";

switch($_SESSION["s_tipo"]) { 
      case "AL":   // Bloque 1 
         Header("Location: .../alumnos/menual.php");
         break; 
      case "PR":   // Bloque 2 
         Header("Location: menupr.php");
         break; 
	  case "AP":   // Bloque 3
         Header("Location: menuap.php");
         break; 
      case "AD":   // Bloque 4
         Header("Location: menuad.php");
         break; 
      default:   // Bloque 5
         echo "No es un usuario válido del sistema"; 
        
   } 


}
}
}

</script>
lo que pasa es que siempre me muestra el mensaje "Error: A ocurrido un problema, vuelva a intentarlo mas tarde."... ponga o no ponga una contraseña correcta... estoy de las 12 del dia en esto y la verdad ya estoy que tiro mi pc por la ventana.. si saco esa mensaje.. me aparece el mensaje "indefinido" refiriendose a que no he definido ese error... la funcion muestra mensaje y oculta mensaje es la que hace que salga el mensaje en un div en la pagina y no encontre relevante ponerlo... el problema yo se que es acá pero como son mis primeros pasos en ajax me es imposible allarlo

cualquier ayuda se agradece

saludos
  #2 (permalink)  
Antiguo 03/09/2007, 15:37
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

bueno descubrí un par de cosas... primero ese if esta mal hecho ya que siempre pasará por el ultimo que dice

if(respuesta=="error2")
{
var texto="Error: La contraseña no es válida.<br><br><button onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
}
else
var texto= Error: A ocurrido un problema, vuelva a intentarlo mas tarde.<br><br><button onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";

muestraMensaje(texto);


asi que aunque sea ok pasará por acá y sera diferente de error2 e imprimirá el ultimo texto... esto esta mal construido asi que nunca funcionaría...

en todo caso si dejo solo la primera sentencia if donde compara lo enviado por php con OK ... tampoco funciona, me hice un archivo php que contenia solo un echo "OK".... pero tampoco funciona... lo que recibe ajax.responseText es distinto de lo que imprimo con php y eso no se por que sucede... alguien sabe.. ??? cualquier luz se agradecerá mucho...

el problema ocurre especificamente acá

var respuesta= ajax.responseText;

por que probe reemplazando por esto

var respuesta= "OK";


y si funciona... osea el problema es que lo que imprimo con echo en php no se recibe igual en el js... saludos y de antemano gracias
  #3 (permalink)  
Antiguo 03/09/2007, 17:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

hora si que no se... como no se js se me ocurrio recien ahora hacer un alert asi alert ( ajax.responseText ); para cer que contenia ajax.resposeText....

y si tiene el valor ok que le envio desde php... luego hice un alert de la variable respuesta... pense que alomejor ahí estaba guerdando mal

y tambien esta correcto , contiene el "OK" que le envio desde php

ahora por que esta condición no lo ve asi??

if(respuesta=="OK")
{
var texto="Bienvenido.<br>Redireccionando.<br><br><but ton onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
}

de verdad no hay nadie que sepa??? saludos
  #4 (permalink)  
Antiguo 03/09/2007, 18:02
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 2 meses
Puntos: 3
Re: me pueden decir que tiene de malo este codigo

mm pudiera ser que lo que recives en el responseText lleve espacios, no es lo mismo ' ok' a ' ok ', prueba esto:

alert('-'+ajax.responseText+'-');

y checate si el 'ok' no sale con espacio entre los guiones, hay nos cuentas que paso
__________________
Wow! No se que decir...
  #5 (permalink)  
Antiguo 03/09/2007, 19:46
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

mmm lo probé y sale así:

-OK
-

raro por que el php que estoy usando para probar solo tiene este codigo:

<?php
echo"OK";
?>

hice ese php ya que no sabia donde estaba el error y tube que empezar a probar todo para darme cuenta que es el condicional if que al parecer trabaja mal con esto.

miren acá mismo en el foro encontré un tema con el mismo problema y el no lo pudo arreglar:

hachetetepe:// www.forosdelweb.com/f77/condicional-al-recibir-responsetext-495951/

en la web no he encontrado nada al respecto... creo que voy a empezar a probar otras soluciones. saludos y gracias por responder
  #6 (permalink)  
Antiguo 03/09/2007, 20:38
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

bueno... nada.. cambie los if por un switch case y ademas agregué una funcion que eliminara espacios en blanco al comienzo y al final de la palabra y nada sigue dando error y el alert sigue imprimiendo bien... el swish llega hasta el valor por defecto y eso rroja en pantalla como que la variable nunca tomo los valores correctos pero en el alert si sale bien... me doy por vencido... veré otra solución ...

Código:
if (ajax.readyState==4)
			{
				var respuesta=eliminaEspacios(ajax.responseText);
				
				switch( respuesta ) {
  					case "ok" : {
							var texto="<img src='ok.gif' alt='Ok'><br>Bienvenido.<br>Redireccionando.<br><br><button onClick='ocultaMensaje()' type='button' 						                            class='btnok'>Ok</button>";
					        break;
					        }
					case "error1": {
							var texto="<img src='error.gif'><br><br>Error: La contraseña no fue enviada.<br><br><button onClick='ocultaMensaje()' type='button'                    		class='btnok'>Ok</button>";
							break;
							}
					case "error2": {
							var texto="<img src='error.gif'><br><br>Error: La contraseña no es válida.<br><br><button onClick='ocultaMensaje()'	type='button' 															                            class='btnok'>Ok</button>";
							break;
									}
							default: {
								var texto= "<img src='error.gif'><br><br>Error: respuesta A ocurrido un problema, vuelva a intentarlo mas tarde.<br><br><button                   				 onClick='ocultaMensaje()' type='button' class='btnok'>Ok</button>";
							}
						
				}

SALUDOS
  #7 (permalink)  
Antiguo 03/09/2007, 22:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

Cita:
Iniciado por zyon Ver Mensaje
mm pudiera ser que lo que recives en el responseText lleve espacios, no es lo mismo ' ok' a ' ok ', prueba esto:

alert('-'+ajax.responseText+'-');

y checate si el 'ok' no sale con espacio entre los guiones, hay nos cuentas que paso

les pone un enter.. sale asi

-OK

-

es cosa de sacar eso...
  #8 (permalink)  
Antiguo 03/09/2007, 23:42
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

ya lo arreglé !!!!!!!!!!!!!!!!!!!!!!!!
no de la mejor forma, pero funciona.. enrealidad la forma es bastante penca pero dado mis escasos sonocimentos de JS y que entre detectar el problema y todo eso ya llevo 1 día completo.. por ahora me conformo...

por allgún oculto motivo , aun no se por que y me gustaría saberlo... al hacer esto

var respuesta = ajax.responseText;

llegaba el valor que enviaba desde php... con espacios en blanco al final y como 3 saltos de linea al final.. un misterio para mi...

lo arreglé asi:
var respuesta1 = ajax.responseText;
var respuesta2 = respuesta1.replace(/\r\n/,"");
var respuesta3 = respuesta2.replace(/\r\n/,"");
var respuesta = eliminaEspacios(respuesta3);

por que tanto replace????... por que con uno no funcionaba... y con dos quedaban espacios en blanco aun... asi que asi quedo para mientras... si alguien se manifiesta con una funcion para eso mejor... por ahora me contento con que funciona por fin....

saludos y gracias al que respondió
  #9 (permalink)  
Antiguo 04/09/2007, 04:40
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: me pueden decir que tiene de malo este codigo

El problema está en qie el echo() incluye salto de linea al final.
Creo que lo más sencillo es algo como:
if(respuesta.substring(0,2)=="OK")
  #10 (permalink)  
Antiguo 04/09/2007, 06:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 2 meses
Puntos: 3
Re: me pueden decir que tiene de malo este codigo

imaginaba que seria eso, espacios o salto de lineas, yo use esto :

Código HTML:
<script>
String.prototype.trim= function() {//Agrega la función trim al objeto String
   return this.replace(/(^\s*)|(\s*$)/g,""); //elimina espacios a izquierda y derecha
   }
</script> 
eso me elimina espacios como el trim de JAVA, asi solo necesito llamarlo cada vez que lo requiero, en tu caso hubiera sido

respuesta=ajax.responseText.trim();

y listo!
__________________
Wow! No se que decir...
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 18:33.