Foros del Web » Programando para Internet » PHP »

no puedo comparar dos cadenas iguales

Estas en el tema de no puedo comparar dos cadenas iguales en el foro de PHP en Foros del Web. Esto va para Ripley chequen mi codigo: <?php //ESTA VARIABLE LA VOY A LEER DEL CAMPO DE TEXTO USUARIO $usu_text=8003; //ESTA PAGINA ME ARROJA EL ...
  #1 (permalink)  
Antiguo 16/08/2011, 20:45
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 0
no puedo comparar dos cadenas iguales

Esto va para Ripley chequen mi codigo:

<?php
//ESTA VARIABLE LA VOY A LEER DEL CAMPO DE TEXTO USUARIO
$usu_text=8003;
//ESTA PAGINA ME ARROJA EL PASSWORD CORECTO DEL USUARIO
$url="http://unapagina.com/bin/vmPassword.php?EXTENSION=".$usu_text."";
//echo $url;
//AQUI EXTRAIGO EL PASSWORD QUE ME ARROJA LA PAGINA
$passwd = file_get_contents($url);
//if(settype($passwd, "integer"))
//echo "si la forzo<BR>";
echo gettype($passwd)."<BR>";
echo ord($passwd)."<BR>";
echo $passwd."<BR>";
//*************************************
//ESTA VARIABLE LA VOY A EXTRAER DEL CAMPO DE TEXTO PASSWORD
$pass_text="8003";
//settype($pass_text, "string");
echo gettype($pass_text)."<BR>";
echo ord($pass_text)."<BR>";
echo $pass_text."<BR>";
//AHORA COMPARO EL PASSWORD DEL CAMPO DE TEXTO CON EL DE LA PAGINA
$cmp=strcmp($passwd,$pass_text);
echo $cmp."<BR>";
if($passwd==$pass_text)
echo "¡Acceso Concedido!";
else
echo "¡Acceso Denegado!";
?>

y esta es mi salida:

string
60

8003


string
56
8003
1
¡Acceso Denegado!

Que pasaa ??

estoy leyendo el 8003 de una pagina y lo compra con una cadena igual 8003: php dice que los dos son string pero su assci es diferente y no me deja comprarlo ni con el strcmp ni con un simple if ????? necesito saber si son iguales
  #2 (permalink)  
Antiguo 17/08/2011, 02:18
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: no puedo comparar dos cadenas iguales

A ver, tienes esto:
Código PHP:
Ver original
  1. $cmp=strcmp($passwd,$pass_text);
  2. echo $cmp."<BR>";

Cuya salida es 1 (true). Pues simplemente:
Código PHP:
Ver original
  1. if (strcmp($passwd,$pass_text)) {
  2.     echo "¡Acceso Concedido!";
  3. } else {
  4.     echo "¡Acceso Denegado!";
  5. }

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 17/08/2011, 07:58
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: no puedo comparar dos cadenas iguales

Si pero tengo dos cadenas que contienen lo mismo = "8003" y si son iguales el strcmp regresa un cero no un uno. Me regresa un 1 por las esta tomando diferente checa cuando imprimo las cadenas en assci y salen numeros diferentes. No entiendo porque yo necesito que sean iguales para compararlas es una pagina para un login.
  #4 (permalink)  
Antiguo 17/08/2011, 08:23
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: no puedo comparar dos cadenas iguales

si no me equivoco el origen de los datos es:
//ESTA VARIABLE LA VOY A LEER DEL CAMPO DE TEXTO USUARIO
$usu_text=8003; // esto como llega? get, post, etc
$url="http://unapagina.com/bin/vmPassword.php?EXTENSION=".$usu_text."";
//AQUI EXTRAIGO EL PASSWORD QUE ME ARROJA LA PAGINA
$passwd = file_get_contents($url);

a ver hace esto sin nada de por medio
var_dump($passwd);
var_dump($usu_text);
  #5 (permalink)  
Antiguo 17/08/2011, 11:34
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: no puedo comparar dos cadenas iguales

Al desplegar estas cadenas


echo var_dump($passwd);
echo var_dump($usu_text);

me devuelve esto:

string(18) "
string(5) "14789"

Cuando las dos cadenas contienen el mismo valor= 14789
  #6 (permalink)  
Antiguo 17/08/2011, 11:46
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: no puedo comparar dos cadenas iguales

Una tiene 18 caracteres y la otra tiene 5 caracteres... No se parecen en nada. Elimina los posibles espacios que tenga con trim.

string(18) "
string(5) "14789"

Imprime aquí el contenido de $passwd = file_get_contents($url);
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 17/08/2011, 11:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: no puedo comparar dos cadenas iguales

no les pongas el echo a esto
var_dump($passwd);
var_dump($usu_text);

hay tenes RLOPEZ los datos traidos no son los correctos, el problema esta en
$url="http://unapagina.com/bin/vmPassword.php?EXTENSION=".$usu_text."";
mostranos el archivo vmPassword.php
  #8 (permalink)  
Antiguo 17/08/2011, 13:11
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: no puedo comparar dos cadenas iguales

Pues que les cuento. Ya logre resolverlo

Resulta que el pasword me lo estaba arrojando la pagina con un salto de linea al final lo cual elimine con un str_replace y ahora ya puedo compararlas de forma correcta.

Caso cerrado gracias a todos me dieron la pista de forma indirecta.
  #9 (permalink)  
Antiguo 17/08/2011, 13:22
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: no puedo comparar dos cadenas iguales

me alegro que no te hayas cerrado a o que creias en principio

Etiquetas: cadenas, iguales, variables, usuarios
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 08:08.