Foros del Web » Programando para Internet » PHP »

Problema con un "IF"

Estas en el tema de Problema con un "IF" en el foro de PHP en Foros del Web. Hola a todos estoy trabajando con un autenticador de usuarios y al comparar el nombre de usuario que introducen con el de la base de ...
  #1 (permalink)  
Antiguo 18/04/2006, 17:16
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Problema con un "IF"

Hola a todos

estoy trabajando con un autenticador de usuarios y al comparar el nombre de usuario que introducen con el de la base de datos me dice que son diferentes, cuando no lo son... son iguales. Este es mi codigo:

Código PHP:
<?
if ($_POST['user'] != $usuario_datos['Nombre']){
Header ("Location: $redir?error_login=4");
exit;}
?>
El $_POST['user'] y $usuario_datos['Nombre'] contienen lo mismo. He impreso los datos y son iguales. En este if si son diferentes el usuario es redireccionado a una pagina indicandole que el usuario no existe. Pero haciendo pruebas con datos iguales entra al if, cosas que no deberia pasar.

¿Cuál puede ser mi error?

Salu2
  #2 (permalink)  
Antiguo 18/04/2006, 23:09
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 6 meses
Puntos: 32
¿Puedes hacer un var_dump de ambas variables y mostrarnos que aparece?

¿Respetas las mayúsculas/minúsculas?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 19/04/2006, 09:45
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Ya...

Cita:
Iniciado por enriqueplace
¿Puedes hacer un var_dump de ambas variables y mostrarnos que aparece?

¿Respetas las mayúsculas/minúsculas?
Hola, ya hice lo que me dices y si hay diferencia en lo que me muestra. Lo que pasa es que al comparar el nombre de usuario introducido por el usuario (valga la redundancia) desde el formulario con el que esta en la base de datos pues me genera error porque el de la bd tiene un espacio de mas. Pero no se por qué!! snif snif.....lo checo en la base de datos y no tiene ningún espacio. Haz de cuenta que pasa esto:

Datos introducidos desde el formulario:
"User"
Datos en la base de datos:
"User " <----Hay un espacio ahi.

Los dos son de tipo string.

¿Por qué el nombre de usuario de la base de datos lo toma como si tubiera un espacio, cuando no lo tiene según yo?

Salu2
  #4 (permalink)  
Antiguo 19/04/2006, 09:49
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Lo que podrias hacer es usar la funcion trim() - elimina espacios al comienzo y al final - antes de almacenar el nombre del usuario en la BD.
  #5 (permalink)  
Antiguo 19/04/2006, 10:10
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Iniciado por mauled
Lo que podrias hacer es usar la funcion trim() - elimina espacios al comienzo y al final - antes de almacenar el nombre del usuario en la BD.
Estoy de acuerdo con Mauled el problema radica en el mismo momento que estas agregando registros a tu base de datos... Posiblemente debes de tener en tu arreglo algun espacio despues del original valor de la variable antes de enviar...

pero para evirtar esto podrias bien usar la funcion antes mencionada, trim() asi puedas dar formato a alguna variable con esta funcion.-

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #6 (permalink)  
Antiguo 19/04/2006, 11:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Ya se pudo pero.....

Cita:
Iniciado por mauled
Lo que podrias hacer es usar la funcion trim() - elimina espacios al comienzo y al final - antes de almacenar el nombre del usuario en la BD.
Hola, gracias!!

Logré quitar el espacio de más que habia pero ¿por qué es que lo tenia? o sea, modifique el nombre directamente en la base de datos con un update para quitarle ese espacio pero seguia haciendo lo mismo. De hecho al realizar una consulta basando ese nombre, en el WHERE lo indicaba sin espacios y si me lo daba. El problema se daba al hacer las comparaciones de formulario y base de datos.

Tube que usar el trim() como me dijiste pero me gustaria no tener que utilizarlo y jalar los datos de mi base de datos sin problemas ¿qué más puedo hacer para que no pase eso?

Gracias...salu2
  #7 (permalink)  
Antiguo 19/04/2006, 11:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Tube que usar el trim() como me dijiste pero me gustaria no tener que utilizarlo y jalar los datos de mi base de datos sin problemas ¿qué más puedo hacer para que no pase eso?
Tendrás que evaluar si el problema viene del código que usas para ingresar ese dato a tu BBDD .. arreglarlo y de ahí si es necesario "limpiar" tu BBDD (esos campos) aplicando un "trim()" (o equivalente en SQL mejor) para continuar con los datos sin "esos espacios".

De todas formas .. si esos datos los ingresan desde un formulario por ejemplo .. -siempre- es recomendable "filtrar" ese dato: aplicando un trim() .. (para quitar posibles espacios/saltos de línea .. etc de más delante y al final de la cadena), validar el tipo de dato .. etc.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 19/04/2006, 11:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Al parecer no es problema de código....

Cita:
Iniciado por Cluster
Tendrás que evaluar si el problema viene del código que usas para ingresar ese dato a tu BBDD ..
Inserte un registro a la base de datos, directamente desde el administrador de bd y al reflejar nuevamente los datos para comparar me di cuenta que el registro que inserte me lo sigue tomando con un espacio en blanco de más al final.

¿Es problema de mi tabla de la base de datos o qué puede ser?

Salu2
  #9 (permalink)  
Antiguo 19/04/2006, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Ultra Violeta
Inserte un registro a la base de datos, directamente desde el administrador de bd y al reflejar nuevamente los datos para comparar me di cuenta que el registro que inserte me lo sigue tomando con un espacio en blanco de más al final.

¿Es problema de mi tabla de la base de datos o qué puede ser?

Salu2
mm Y seguro que es un espacio en blanco? .. o podría ser un salto de línea (un "INTRO") .. o código de control que tu administrador usa? ...

Y si almacenas ese dato desde un script PHP "limpio" .. algo tipo (desde PHP):

$sql="UPDATE tabla SET dato=$valor WHERE id=?";
// ejecutas esa sentencia SQL ...

Que sucede?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 19/04/2006, 11:41
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 12 años, 9 meses
Puntos: 0
Si....

Cita:
Iniciado por Cluster
mm Y seguro que es un espacio en blanco?
Si, si es un espacio en blanco pero acabo de investigar y al parecer es un espacio que me da por default SQL Server 2005 porque la inserción y el update la hacia directamente desde ahi y me lo seguia dando.

Como este dato que jalo es de una bd que es alimentada desde una aplicación de escritorio desarrollada por un compañero pues preguntandole me comenta que el también se habia topado con ese mismo problema y que lo soluciono con un trim(). El fue quien me dijo que SQL Server 2005 al parecer lo da por default.

Pues si asi es, seguiré trabajando implementando el trim()...que mas!! jejej

Muchas gracias a todos....
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 21:50.