Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] duda en buscar, editar y eliminar en archivo .user

Estas en el tema de duda en buscar, editar y eliminar en archivo .user en el foro de PHP en Foros del Web. Php posee opciones para leer archivos ini, sin embargo carece de una funcion que los genere. Con estas dos funciones puedes generar archivos con la ...

  #31 (permalink)  
Antiguo 29/11/2013, 15:12
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: duda en buscar, editar y eliminar en archivo .user

Php posee opciones para leer archivos ini, sin embargo carece de una funcion que los genere.
Con estas dos funciones puedes generar archivos con la estructura que necesitas

Código PHP:
Ver original
  1. <?php
  2. function lee_archivo($archivo, $multi_secciones = true){
  3.     // Analizar con secciones
  4.     if(is_file($archivo)) $matriz_ini =
  5.     parse_ini_file($archivo, $multi_secciones);
  6.     else $matriz_ini = 'El archivo no existe';
  7.     return $matriz_ini;
  8. }
  9.  
  10. function escribe_archivo($matriz, $archivo, $multi_secciones = true, $modo = 'w'){
  11.     $salto = "\r\n";
  12.     $salida = '';
  13.     if(!is_array(current($matriz))){
  14.         $tmp = $matriz;
  15.         $matriz['tmp'] = $tmp; // no importa el nombre de la sección, no se usará
  16.         unset($tmp);
  17.     }
  18.     foreach($matriz as $clave => $matriz_interior){
  19.         if($multi_secciones){
  20.             $salida .= '['.$clave.']'.$salto;
  21.         }
  22.         foreach($matriz_interior as $clave2 => $valor)
  23.         $salida .= $clave2.' = "'.$valor.'"'.$salto;
  24.         if($multi_secciones){
  25.             $salida .= $salto;
  26.         }
  27.     }
  28.     $puntero_archivo = fopen( $archivo, $modo);
  29.     if($puntero_archivo !== false){
  30.         $escribo = fwrite($puntero_archivo, $salida);
  31.         if($escribo === false){
  32.             $devolver = -2;
  33.         }else{
  34.             $devolver = $escribo;
  35.         }
  36.     fclose($puntero_archivo);
  37.     }else{
  38.         $devolver = -1;
  39.     }
  40.     return $devolver;
  41. }
  42. ?>

Si tienes dudas de como usarlas dame un toque y te comento.
  #32 (permalink)  
Antiguo 29/11/2013, 15:22
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

pero no es un archivo ini
  #33 (permalink)  
Antiguo 29/11/2013, 15:23
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por xoceunder Ver Mensaje
pero no es un archivo ini
pero su estructura es parecida a un archivo ini
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #34 (permalink)  
Antiguo 29/11/2013, 16:20
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok tengo esto para eliminar la cuenta

Código PHP:
Ver original
  1. $palabra=$_REQUEST["user"];    
  2. $pos = 0;
  3. if( $palabra ){
  4.    
  5. foreach($datos as $pos=>$linea){
  6.     if (strstr($linea,$palabra)){
  7.         //reemplazo lo que voy a borrar en la cadena por nada
  8.     echo "si esta la palabra $linea, esta en la linea : ".$pos;
  9.     $X = $pos; // Number of lines to remove
  10.  
  11.     $lines = file('dato.user');
  12.     $first_line = $lines[0];
  13.     $lines = array_slice($lines, $X + 5);
  14.     //$lines = array_merge(array($first_line, ""), $lines);
  15.  
  16.      // Write to file
  17.     $file = fopen('dato.user', 'w');
  18.     fwrite($file, implode('', $lines));
  19.     fclose($file);
  20.     }
  21.    }
  22.    $pos++;
  23. }

pero me elimina todas las anteriores

ejemplo linia 0 se queda y si boro linia 34 elimina desde la linia 1 hasta la 35
  #35 (permalink)  
Antiguo 29/11/2013, 17:30
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por xSkArx Ver Mensaje
pero su estructura es parecida a un archivo ini
xSkArx la estructura no es que sea parecida, si no que es la estructura de un archivo ini, pero con la extension cambiada


Cita:
Si aun asi quieres seguir usando la estructura de archivo que tienes, estas son las funciones que necesitas
Código PHP:
Ver original
  1. <?php
  2. function lee_archivo($archivo){
  3.     if(is_file($archivo)) return file_get_contents($archivo);
  4.     else{
  5.         echo 'El archivo especificado no existe.';
  6.         exit;
  7.     }
  8. }
  9. function escribe_archivo($archivo, $contenido_archivo){
  10.     $fp = fopen($archivo, 'w');
  11.     fwrite($fp, $contenido_archivo);
  12.     fclose($fp);
  13. }
  14.  
  15. function agrega($archivo, $user, $pwd, $group){
  16.     $salto = "\r\n";
  17.     $contenido_archivo = lee_archivo($archivo);
  18.     $contenido_archivo .= '[account]'.$salto.'user = '.$user.$salto.'pwd = '.$pwd.$salto.'group = '.$group.$salto.$salto;
  19.     escribe_archivo($archivo, $contenido_archivo);
  20. }
  21.  
  22. function borra($archivo, $patron, $valor){
  23.     $salto = "\r\n";
  24.     $valor = $patron.' = '.$valor;
  25.     $contenido_archivo = lee_archivo($archivo);
  26.     $contenido_archivo = explode('[account]'.$salto, $contenido_archivo);
  27.     foreach($contenido_archivo as $key => $value){
  28.         if(strpos($value, $valor) !== false) unset($contenido_archivo[$key]);
  29.         unset($key,$value);
  30.     }
  31.     if(count($contenido_archivo) > 1) $contenido_archivo = implode('[account]'.$salto, $contenido_archivo);
  32.     else $contenido_archivo = ''; //Esto es para evitar que escriba en el archivo si no existen datos
  33.     escribe_archivo($archivo, $contenido_archivo);
  34. }
  35. ?>
Cita:
/**************************************/
/* Modo de uso */
/**************************************/

/* Para agregar datos */
agrega('usuario.user','usuario','contraseña','1');
/* Para borrar por usuario */
borra('usuario.user','user','1');
/* Para borrar por password */
borra('usuario.user','pwd','4');
/* Para borrar por grupo */
borra('usuario.user','group','7');
/* Para mostrar el contenido del archivo */
print(lee_archivo('usuario.user'));
?>

Última edición por Dalam; 29/11/2013 a las 19:07
  #36 (permalink)  
Antiguo 30/11/2013, 16:11
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

muchas gracias Dalam muy util solo falta editar la cuenta
  #37 (permalink)  
Antiguo 01/12/2013, 08:45
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por Dalam Ver Mensaje
xSkArx la estructura no es que sea parecida, si no que es la estructura de un archivo ini, pero con la extension cambiada




Código PHP:
Ver original
  1. <?php
  2. function lee_archivo($archivo){
  3.     if(is_file($archivo)) return file_get_contents($archivo);
  4.     else{
  5.         echo 'El archivo especificado no existe.';
  6.         exit;
  7.     }
  8. }
  9. function escribe_archivo($archivo, $contenido_archivo){
  10.     $fp = fopen($archivo, 'w');
  11.     fwrite($fp, $contenido_archivo);
  12.     fclose($fp);
  13. }
  14.  
  15. function agrega($archivo, $user, $pwd, $group){
  16.     $salto = "\r\n";
  17.     $contenido_archivo = lee_archivo($archivo);
  18.     $contenido_archivo .= '[account]'.$salto.'user = '.$user.$salto.'pwd = '.$pwd.$salto.'group = '.$group.$salto.$salto;
  19.     escribe_archivo($archivo, $contenido_archivo);
  20. }
  21.  
  22. function borra($archivo, $patron, $valor){
  23.     $salto = "\r\n";
  24.     $valor = $patron.' = '.$valor;
  25.     $contenido_archivo = lee_archivo($archivo);
  26.     $contenido_archivo = explode('[account]'.$salto, $contenido_archivo);
  27.     foreach($contenido_archivo as $key => $value){
  28.         if(strpos($value, $valor) !== false) unset($contenido_archivo[$key]);
  29.         unset($key,$value);
  30.     }
  31.     if(count($contenido_archivo) > 1) $contenido_archivo = implode('[account]'.$salto, $contenido_archivo);
  32.     else $contenido_archivo = ''; //Esto es para evitar que escriba en el archivo si no existen datos
  33.     escribe_archivo($archivo, $contenido_archivo);
  34. }
  35. ?>
Dalam solo me faltaria editar la cuenta
  #38 (permalink)  
Antiguo 02/12/2013, 17:35
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

no se si estoy bien pero no me funciona

para poder editar

Código PHP:
Ver original
  1. function edita($archivo, $patron, $valor){
  2.     $salto = "\r\n";
  3.     $valor = $patron.' = '.$valor;
  4.     $contenido_archivo = lee_archivo($archivo);
  5.     $contenido_archivo = explode('[account]'.$salto, $contenido_archivo);
  6.     foreach($contenido_archivo as $key => $value){
  7.         if(strpos($value, $valor) == 1) {
  8.           $contenido_archivo .= '[account]'.$salto.'user = '.$user.$salto.'pwd = '.$pwd.$salto.'group = '.$group.$salto.$salto;
  9.           escribe_archivo($archivo, $contenido_archivo);
  10.         }
  11.     }
  12. }
  #39 (permalink)  
Antiguo 22/12/2013, 17:21
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok estoy teniendo problema con un codigo ya que no me elimina los datos


codigo

Código PHP:
Ver original
  1. <?
  2. function borra($valor){
  3.     global $G_archivo_oscam;
  4.    
  5.     $salto = "\r\n";
  6.     $valor = 'user = '.$valor;
  7.     $contenido_archivo = lee_archivo($G_archivo_oscam);
  8.     $contenido_archivo = explode('[account]'.$salto, $contenido_archivo);
  9.     foreach($contenido_archivo as $key => $value){
  10.         if(strpos($value, $valor) !== false)
  11.         unset($contenido_archivo[$key]);
  12.         unset($key,$value);
  13.     }
  14.  
  15. }
  16.  
  17. if( isset($_REQUEST["delete"]) ) {
  18.    borra($_REQUEST["delete"]);
  19. }

y no bora la cuenta no se que mal estoy haciendo
  #40 (permalink)  
Antiguo 22/12/2013, 18:41
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok ya solucione jeje gracias

Etiquetas: Ninguno
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 02:38.