Problema comparando datos con archivo (php)

VipeR_CS

Bueno me explicaré mejor porque no sabía muy bien lo que poner en el título.

El caso es que estoy haciendo un registro chapucero para una pijada, el cual sólo pide nick y pass. Los nicks se guardarán en un archivo "usuarios.txt" y las passwords en un archivo "claves.txt" pero aún no está hecha esta parte. Ahora lo que he hecho es crear el archivo usuarios.txt a mano y meter unos cuantos nicks (un nick cada línea) para comprobar que funciona el bucle que tengo para comprobar si el nick elegido por el usuario al registrarse ya está registrado o no. He hecho lo siguiente:

if (is_file($archivousers)) {
$ar=fopen($archivousers,"r");
$i=0;
while (!feof($ar)) {
$listausers[$i]=fgets($ar);
if ($nick==$listausers[$i]) {
echo "Lo sentimos, el nickname elegido está siendo usado por otra persona.< br>< br>";
echo "<a href='registro.php'>Volver</a>";
}
$i++;
}
clearstatcache();
fclose($ar);
}

Pero si intento registrar uno de los nicks que hay en el archivo no sale el mensaje que debería, tampoco sale ningún error. Los usuarios se guardan correctamente en el array, eso lo he comprobado, y la variable $nick obviamente recoge el nick que ha introducido el usuario mediante un input. Agradecería si alguien pudiera decirme dónde está el problema porque yo no lo veo :s, gracias. Espero haberme explicado bien, es un tema algo raro :\

Josepanaero

No estoy muy seguro pq nunca he usado esas funciones, pero me da a mí q el problema puede estar en que fgets te coja tb el salto de línea, me entiendes?

O sea, imagina q $nick contiene 'Juan', y por ejemplo $listausers[3] contiene 'Juan\n'

Entonces por eso no te entra en el if.

Creo q puede ser por eso, pruébalo y ya nos comentas.

Salu2!!

VipeR_CS

hm pues sí, es posible. Voy a ver si puedo kitarle ese salto de linea a ver que tal y ya vuelvo a postear, thx.

guner

Me olía que fuera eso sin siquiera ver el código, es un error típico.

Te doy una pista... trim()

VipeR_CS

Pues era eso, lo he hecho así al final:

$listausers[$i]=strtolower(fgets($ar));
$listausers[$i]=str_replace("\r\n","",$listausers[$i]);

Estuve media hora probando a remplazar \n, \r, poniendolo entre parentesis hasta que caí en la cuenta de que tenía que poner ambos ¬¬. Voy echarle un vistazo a trim() ahora thx.

Usuarios habituales

  • VipeR_CS
  • guner
  • Josepanaero