Foros del Web » Programando para Internet » PHP »

Sobre-escribir archivo de texto

Estas en el tema de Sobre-escribir archivo de texto en el foro de PHP en Foros del Web. Pues la pegunta es la siguiente Tengo un archivo de tipo .htpasswd con usuarios:contraseñas (no por línea como mandan los canones) Desearía saber como puedo, ...
  #1 (permalink)  
Antiguo 08/05/2006, 11:53
 
Fecha de Ingreso: agosto-2003
Mensajes: 43
Antigüedad: 14 años, 3 meses
Puntos: 0
Sobre-escribir archivo de texto

Pues la pegunta es la siguiente
Tengo un archivo de tipo .htpasswd con usuarios:contraseñas (no por línea como mandan los canones)
Desearía saber como puedo, mediante php encontrar un usuario y cambiarle el nombre de usuario y/o la contraseña

He probado con diversas conbinaciones de feof, fputs ... pero lo único que consigo es anotar un nuevo usuario con el mismo nombre de usuario y nueva contraseña lo que provoca algunos errores lógicos de entender
__________________
pwmcorg
  #2 (permalink)  
Antiguo 08/05/2006, 15:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
1.- hacelo por líneas. se te va a hacer MUUUUUCHO más fácil.
2.- ¿cómo separás la contraseña del comienzo del nuevo usuario?

yo lo que haría es:
primero separar de alguna forma los diferentes pares usuario:contraseña (preferentemente con explode).
luego buscár qué pedazo contiene el usuario que quiero.....
a ese pedazo le hago otro explode() con ":" como separador
cambio la contraseña
y luego hago un implode() con los datos que tengo.

sería algo como:
Código PHP:
<?php
$archivo 
file_get_contents(archivo);

$pares  explode(separador$archivo);

foreach (
$pares as $num_par => $par) {
 
$datos explode(":"$par);
 if (
$datos[0] == usuario) {
  
$datos[1] = nueva_contrase&#241;a;
  
$pares[$num_par] = implode(":"$datos);
  }
 }

$arch fopen(archivo'w+');
fwrite($arch$pares);
fclose($arch);
?>
si tu archivo estuviera separado por líneas, te ahorrás el primer explode()


Saludos.
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 19:10.