Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/04/2011, 15:54
Avatar de sulacok2
sulacok2
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema al comparar dos variables en un bucle

Muy buenas estoy intentando comparar dos variables dentro de un bucle y no lo consigo, en “for” o “while” no me importa en los dos casos sucede lo mismo, me explico.
En los dos casos “los dos por separado” antes se recibe una variable de otra pagina “$clave” esta variable se la pasamos a la función pasando el valor a una variable “$contr=strlen($clave)” y luego se analiza con “if($contr >5)”, se mira si es mayor de 5 caracteres, si lo es se abre un archivo de texto con “fopen()” y se entra en el bucle para leerlo con “fgets()”, cada vez que se lee una línea esta se compara con otro “if($lineasalto==$clave)” para ver si es igual que la variable enviada por la otra pagina, esa que antes se analizo para ver cuantos caracteres tenia, pues si utilizo el operador “==” el bucle sigue hasta el final y no entra aun las dos coincidan, si utilizo “!=” lógicamente son distintas en muchas ocasiones antes de identificar la que me interesa y entra de cualquier forma y por lo tanto error de las dos formas, vale ya lo explique ahora les dejo el código para que lo vean y haber si pueden ayudarme.

“$clave” es la variable que se envía desde otra página entra en esta y el código empieza así:
<form action="ContPassw.php" method="POST">
<?php
$contr = strlen($clave); //Esta función nos permite contar los caracteres
if($contr > 5) //Y hacemos la comparación
{
$ar=fopen("Registros/$nombre.txt","r") or //Abrimos el archivo
die("<h1>No se pudo abrir el archivo o no existe.</h1>");
while (!feof($ar)) //Entramos en el bucle
{
$linea=fgets($ar); //Leemos la primera linea. $lineasalto=nl2br($linea); //Le añadimos un salto de carro.
if($lineasalto == $clave) //Y comparamos.
{
fclose($ar);
include("3PAGPRINinclude.php");
exit;
}
}
fclose($ar);
echo "<h1>No coinciden los datos que nos proporcionas, intentalo de nuevo<br></h1>";
include("../CuriososIncluido.php");
//exit;
}
else
{
echo "<h1>La clave tiene que contener 5 o mas caracteres alfanumericos, vuelve a intentarlo:</h1>";
include("../CuriososIncluido.php");
//exit;
}
?>
</form>

Vale como veréis he comentado los pasos que sigue el código y lo que no se es si al utilizar la función “strlen()” esta modifica en algo al contenido o formato de la variable y en el bucle con la otra función “n12br()” pienso en si la linea leída luego se le añade un salto de carro y claro esto tiene que modificar en algo el contenido y al compararlos pues ya no sean los mismos, pero comparando la línea que no se le añade el salto de carro hace lo mismo, así que utilice la función así:

$linea=fgets($ar);
$lineasalto=nl2br($linea);
$clave2=n12br($clave);
if($lineasalto == $clave2)

Pero me da error la segunda función, me lanza esto y pagina en blanco:
Fatal error: Call to undefined function n12br() in C:\WWW\Plantilla CURIOSOS 1\ContPassw.php on line 27
Porque ¿Es de solo un uso? Soy consciente de que esta función solo me sirve por si quiero mostrar los datos por pantalla y así sean legibles o más bien se vean bien y en orden

Lo que me parece curioso es que fuera del bucle si me funciona la condición del “if”, he intentado recuperar los resultados de la lectura en una variable un “array” pero no se como recuperar esa variable, es decir yo voy grabando los datos recuperados, los muestro y todo pero dentro del bucle, fuera de el es como si el “array” se borrara y no contiene nada, en fin haber si me podéis echar una mano porque llevo una temporada buscando cosas y no soy capaz de resolver el problema.