Foros del Web » Programando para Internet » PHP »

Comparacion de 2 cadenas String ... no puedo

Estas en el tema de Comparacion de 2 cadenas String ... no puedo en el foro de PHP en Foros del Web. Aqui esta el código que uso, tanton $pass como $datos[1] son cadenas de texto, pero porque no puedo compararlas con "if" ? if ("$pass" <> ...
  #1 (permalink)  
Antiguo 05/12/2002, 14:00
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
Comparacion de 2 cadenas String ... no puedo

Aqui esta el código que uso, tanton $pass como $datos[1] son cadenas de texto, pero porque no puedo compararlas con "if" ?


if ("$pass" <> "$datos[1]"){
echo "No Coincide el Password introducido con el registrado.";}
else {
echo"Nombre:$datos[2]<br>Correo:$datos[3]<br>Creditos en Cuenta:$datos[4]";
}

Lo Intenté asi como arriba y aunque pass y datos sean iguales me sigue saliendo q no coincide.


if ("$pass" = "$datos[1]"){
echo "No Coincide el Password introducido con el registrado.$pass $datos[1]";}
else {
echo"Nombre:$datos[2]<br>Correo:$datos[3]<br>Creditos en Cuenta:$datos[4]";
}

Asi, ni siquiera me dejó usarlo, me sale error. aunque se que de ser asi, los "echos" tendrian que ir invertidos.

if ($pass = $datos[1]){
echo "No Coincide el Password introducido con el registrado.$pass $datos[1]";}
else {
echo"Nombre:$datos[2]<br>Correo:$datos[3]<br>Creditos en Cuenta:$datos[4]";
}

asi, lo mismo, siempre me dice que no coinciden a pesar de que coincidan. estoy frustrado

Alguien puede decime como comparar bien esas cadenas
  #2 (permalink)  
Antiguo 05/12/2002, 15:04
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
estas asignando

lo que estas haciendo es asignando es decir tu para que puedas comparar dos cadenas en este caso que sean iguales utiliza == por ejemplo:

if ($a == $b){
echo "la variable $a y $b son iguales";

}

y para diferenciarlas utiliza !=

ejemplo:

if ($a != $b){
echo "la variable $a y $b son diferentes";

}

en el caso que quiras comparar una variable con una cadena:

$a == "HOLA";

espero te sirva de algo

si no es lo que querias por favor explica que es lo que necesitas

hasta luego.
  #3 (permalink)  
Antiguo 05/12/2002, 15:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En PHP .. el operador para comparar es:

== (dobe igual) .. un = simple es asignar
!= Diferente ...

Y así con todos .. Lee el manual de PHP referente a operadores lógicos ...

if ($cadena1 == $cadena2){
// es igual
} else {
// no es igual
}

o al reves usando != no es igual ..

Un saludo,
  #4 (permalink)  
Antiguo 05/12/2002, 17:26
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
no jala :(

Gracias por su ayuda pero lo he puesto asi

if ($pass == $datos[1]){
echo "No Coincide el Password introducido con el registrado.$pass $datos[1]";}
else {
echo"Nombre:$datos[2]<br>Correo:$datos[3]<br>Creditos en Cuenta:$datos[4]";
}

y no funciona asi la variable pass sea igual o diferente a $datos siempre me da como resultado el else ... acaso es necesario que mencione que $pass es una variable q me traigo desde un formulario de otra página y que $datos[1] lo saco leyendo un archivo? tiene que ver algo esto? o porque no funciona?,
Gracias
  #5 (permalink)  
Antiguo 05/12/2002, 17:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
¿Puedes poner los valores que te muestra al hacer un echo y un poco mas de tu codigo? tambien podrias mirar la funcion strcmp().

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 05/12/2002, 17:46
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
casi casi es todo

Pues eso es casi casi todo el código, la unica parte que falta es cuando se lee el archivo.

Lo peor de todo es que
Cita:
echo "No Coincide el Password introducido con el registrado.$pass $datos[1]";}
como se ve ahi, tengo $pass $datos[1] para ver el resultado, y lo pero es que en ocaciones ese mensaje me sale cuando Ambos me dan exactamente la misma palabra y no sé porque, pero pues de todos modos aqui va el código:

$comprobar = fopen("usuarios/$login.usr", 'r') or die('Error el Nombre De Usuario que Escribiste No Existe.');
while(!feof($comprobar))
{
$d++;
$datos[$d] = fgets($comprobar, 10000);
}
fclose ($comprobar);
if ($pass == $datos[1]){
echo "No Coincide el Password introducido con el registrado.$pass $datos[1]";}
else {
echo"Nombre:$datos[2]<br>Correo:$datos[3]<br>Creditos en Cuenta:$datos[4]";
}

Las Variables $login y $pass las traigo desde un formulario en la página anterior, recalco esto porque posiblemente tenga algo que ver.
  #7 (permalink)  
Antiguo 05/12/2002, 23:57
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Que no tendría que ser así:

if ($pass != $datos[1]){
echo "No Coincide el Password introducido con el registrado.$pass $datos[1]";}
else {
echo"Nombre:$datos[2]<br>Correo:$datos[3]<br>Creditos en Cuenta:$datos[4]";
}


Saludos
  #8 (permalink)  
Antiguo 06/12/2002, 12:06
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
asi es

Asi es Urjose, asi deberia de ser, pero aun asi, sean iguales o direfentes, siempre me da lo del "Else" y no tengo idea de porque,
  #9 (permalink)  
Antiguo 06/12/2002, 12:17
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
y que password ingresas y cual esta en la BD? no será que uno esta en mayusculas y otro en minus. o Algo asi

Todo parece estar bien
  #10 (permalink)  
Antiguo 06/12/2002, 15:27
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
pues el pass lo traigo desde un formulario que es este:
<FORM METHOD="POST" ACTION="admin.php">
<TABLE BORDER=1 CELLPADDING=0 cellspacing=0 ALIGN="CENTER">
<TD ALIGN='RIGHT'><FONT SIZE=2>Login:</FONT></TD>
<TD ALIGN='LEFT'><INPUT TYPE="TEXT" NAME="login" size=8></TD>
</TR>
<TR>
<TD ALIGN='RIGHT'><FONT SIZE=2>Password:</FONT></TD>
<TD ALIGN='LEFT'><INPUT TYPE="TEXT" NAME="pass" size=8></TD>
</TR>
</TABLE>
<P ALIGN="CENTER">
<INPUT TYPE="SUBMIT" VALUE="Entrar"></P>
</FORM>

y luego ya en de comprobacion lo saco de un simple TXT en el script de admin.php ya que no es un script muy grande, pero, no tengo idea de que sea el fallo.
  #11 (permalink)  
Antiguo 06/12/2002, 17:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Creo que ya se tu problema. En el manual en la funcion fgets() comenta que en el string que devuelve incluye el aracter de salto de linea. Con lo cual las dos cadenas no son iguales, ya que la que lees del fichero tiene ese caracter de mas. Para eliminar ese caracter y otros usa la funcion trim().

Por cierto, si en el fichero los campos estan separados por saltos de linea, quizas te seria mas facil leer el fichero con la funcion file().

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 06/12/2002, 17:51
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
Tienes Razón

Tienes razón josem i, no recordaba el detalle del salto de linea, voy a checar eso y luego ya les aviso a ver que paso. :-0
  #13 (permalink)  
Antiguo 06/12/2002, 17:58
 
Fecha de Ingreso: febrero-2002
Ubicación: Zacatecas
Mensajes: 322
Antigüedad: 15 años, 9 meses
Puntos: 0
GRACIAS

Listo, ese era el problema el famoso '/n' que genera a la hora de traer el archivo, gracias a todos por su ayuda
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 06:09.