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. hoa a todos es que estoy creando un archivo para poder buscar, editar y eliminar en archivo .user y esta es la estuctura aver si ...

  #1 (permalink)  
Antiguo 05/11/2013, 16:41
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
duda en buscar, editar y eliminar en archivo .user

hoa a todos es que estoy creando un archivo para poder buscar, editar y eliminar en archivo .user y esta es la estuctura aver si me dan una ayuda para comensar

el archivo guarda asi

[account]
user = 6
pwd = 6
group = 6

[account]
user = 7
pwd = 7
group = 7
  #2 (permalink)  
Antiguo 06/11/2013, 08:01
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: duda en buscar, editar y eliminar en archivo .user

el formato es de un archivo .INI, creo que php dispone de funciones para ello (porque usa uno como config), investiga en el manual de php por INI functions
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/11/2013, 15:25
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

el archivo es usuario.user no es usuario.ini
  #4 (permalink)  
Antiguo 07/11/2013, 15:37
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Lee bien lo que te.dicen.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 16/11/2013, 06:20
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok miren tengo esto pero solo me funciona con la primera linia

Ejemplo
Código PHP:
Ver original
  1. $data = "user.txt";
  2. list($user, $pwd, $group) = explode("=", $data);
  3. echo $user;
  4. echo $pwd;
  5. echo $group;

archivo .txt
Código txt:
Ver original
  1. [account]
  2. user                          = 1
  3. pwd                           = 1
  4. group                         = 1
  5.  
  6. [account]
  7. user                          = 2
  8. pwd                           = 2
  9. group                         = 2
  10.  
  11. [account]
  12. user                          = 3
  13. pwd                           = 3
  14. group                         = 3
  15.  
  16. [account]
  17. user                          = 4
  18. pwd                           = 4
  19. group                         = 4
  #6 (permalink)  
Antiguo 16/11/2013, 06:31
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

file_get_contents
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #7 (permalink)  
Antiguo 16/11/2013, 07:20
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

perdon como utilizo eso es que quiero poder buscar una linia editarla o borar el usuario completo
  #8 (permalink)  
Antiguo 16/11/2013, 08:04
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Código PHP:
Ver original
  1. $datos=file_get_contents('datos.txt');
  2. //ahora para buscar, regex te seria util
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #9 (permalink)  
Antiguo 17/11/2013, 04:34
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

todavia no he podido dar con el codigo lo que quiero es que pueda buscar editar y borar la cuenta
utilize

Código PHP:
Ver original
  1. $datos=file_get_contents('datos.txt');
  2.     //ahora para buscar, regex te seria util

pero me muestra asi

[account] user = 1 pwd = 6 group = 1 [account] user = 2 pwd = 2 group = 2 [account] user = 3 pwd = 3 group = 3 [account] user = 4 pwd = 4 group = 4

en vez de asi

[account]
user = 1
pwd = 1
group = 1

[account]
user = 2
pwd = 2
group = 2

[account]
user = 3
pwd = 3
group = 3

[account]
user = 4
pwd = 4
group = 4

como seria esto posible
  #10 (permalink)  
Antiguo 17/11/2013, 06:25
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Prueba
Código PHP:
Ver original
  1. $datos=nl2br(file_get_contents('datos.txt'));
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #11 (permalink)  
Antiguo 18/11/2013, 04:10
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok tengo esto

Código PHP:
Ver original
  1. $foo = file('oscam.user');
  2. foreach ($foo as $i => $line)
  3. {
  4.   if (strstr($line, '='))
  5.   {
  6.     echo nl2br($line);
  7.   }
  8. }

y el resultado lo da asi

user = 1
pwd = 6
group = 1

user = 2
pwd = 2
group = 2

user = 3
pwd = 3
group = 3

user = 4
pwd = 4
group = 4

pero lo que me esta faltando es poder buscar dato espesifico y buscar para eliminar
  #12 (permalink)  
Antiguo 18/11/2013, 06:57
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Código PHP:
Ver original
  1. $foo = file('oscam.user');
  2. foreach ($foo as $i => $line)
  3. {
  4.   if (strstr($line, '='))
  5.   {
  6.     if(strstr($line, 'usuario a buscar')){
  7.        unset($foo[$i]);
  8.   }
  9.   }
  10. }
me imagino que puede set asi
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #13 (permalink)  
Antiguo 18/11/2013, 13:36
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: duda en buscar, editar y eliminar en archivo .user

Para que complicarse tanto, yo dije que el archivo tiene la estructura de un .INI, NO que lo fuera, y PHP ya tiene funciones para tales estructuras: http://php.net/manual/en/function.parse-ini-file.php

favor leer con detenimiento
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #14 (permalink)  
Antiguo 18/11/2013, 14:02
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por maycolalvarez Ver Mensaje
Para que complicarse tanto, yo dije que el archivo tiene la estructura de un .INI, NO que lo fuera, y PHP ya tiene funciones para tales estructuras: http://php.net/manual/en/function.parse-ini-file.php

favor leer con detenimiento
Yo lo lei, lo probe, pero rn este caso no es util, porque sobreescribe los indices, haz la prueba y veras que pasa
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #15 (permalink)  
Antiguo 18/11/2013, 14:36
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 meses
Puntos: 397
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por xSkArx Ver Mensaje
Yo lo lei, lo probe, pero rn este caso no es util, porque sobreescribe los indices, haz la prueba y veras que pasa
Claro ya que la estructura del archivo da para eso, ademas las secciones se repiten y se sobreescriben, lo que el usuario puede hacer es pasar su estructura a

Código ini:
Ver original
  1. [account]
  2. user = 6
  3. pwd = 6
  4. group = 6
  5.  
  6. [account2]
  7. user = 7
  8. pwd = 7
  9. group = 7

De esa manera los valores no se sobreescribiran y obtendrá los valores que necesita.

PD: tener en cuenta de que parse_ini_file acepta un segundo parametro para que analice por secciones.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #16 (permalink)  
Antiguo 18/11/2013, 14:52
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por jonni09lo Ver Mensaje
Claro ya que la estructura del archivo da para eso, ademas las secciones se repiten y se sobreescriben, lo que el usuario puede hacer es pasar su estructura a

Código ini:
Ver original
  1. [account]
  2. user = 6
  3. pwd = 6
  4. group = 6
  5.  
  6. [account2]
  7. user = 7
  8. pwd = 7
  9. group = 7

De esa manera los valores no se sobreescribiran y obtendrá los valores que necesita.

PD: tener en cuenta de que parse_ini_file acepta un segundo parametro para que analice por secciones.

Saludos
Asi es, si enunera las secciones seria mejor usar parse_ini_file con el segundo parametro, pero la idea de usar file() no es mala, ya que cada linea es un indice numerico
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #17 (permalink)  
Antiguo 19/11/2013, 05:42
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

es que no funcionara ya que el archivo es de una aplicacion de autentificacion de conection de linux para que un equipo se conecte a esa aplicacion para poder mostrar video es por eso que ando creando un panel para aministrar cuentas para asi poder hacer mas facil el registro y todo eso
  #18 (permalink)  
Antiguo 29/11/2013, 07:25
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok tengo esto funcionando para eliminar linia

Código PHP:
Ver original
  1. // Ejemplo de editar oscam.user
  2.    
  3. //guardar contenido en un array
  4. $cont = file('dato.user');
  5.  
  6. //saber el número de líneas
  7. $numero_filas = count($cont);
  8.  
  9. echo "hay ".$numero_filas." ofertas en la base de datos";
  10.        
  11. //borrar una línea
  12. if (isset($cont[$_GET['linea']])) {
  13. unset($cont[$_GET['linea']]);
  14. }
  15.  
  16. $cont_new = implode('', $cont);
  17.  
  18. $f = fopen('dato.user', 'w');
  19. fwrite($f, $cont_new);
  20. fclose($f);  
  21.  
  22. echo "<p><strong>La oferta ha sido eliminada</strong></p>";

Código dato.user:
Ver original
  1. [account]
  2.     user = 6
  3.     pwd = 6
  4.     group = 6
  5.      
  6.     [account2]
  7.     user = 7
  8.     pwd = 7
  9.     group = 7

pero el problema es que quiero buscar ejemplo user = 6 y me indique la linia que es

para eliminar todo sus datos

[account]
user = 6
pwd = 6
group = 6
  #19 (permalink)  
Antiguo 29/11/2013, 08:58
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Lo otro que podrias hacer es esto
Código TXT:
Ver original
  1. [account][]
  2. user=6
  3. grp=6
  4. pass=6
  5. [account][]
  6. Blabla
Y usar parse_ini_file()
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #20 (permalink)  
Antiguo 29/11/2013, 09:19
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 meses
Puntos: 397
Respuesta: duda en buscar, editar y eliminar en archivo .user

Cita:
Iniciado por xSkArx Ver Mensaje
Lo otro que podrias hacer es esto
Código TXT:
Ver original
  1. [account][]
  2. user=6
  3. grp=6
  4. pass=6
  5. [account][]
  6. Blabla
Y usar parse_ini_file()
No funcionará ya que te devolvera algo como esto:

Código txt:
Ver original
  1. Array
  2. (
  3.     [account] => Array
  4.         (
  5.         )
  6.  
  7.     [] => Array
  8.         (
  9.             [user] => 7
  10.             [pwd] => 7
  11.             [group] => 7
  12.         )
  13.  
  14. )

Si la estructura es así:

Código txt:
Ver original
  1. [account]
  2. user = 6
  3. pwd = 6
  4. group = 6
  5.  
  6. [account2]
  7. user = 7
  8. pwd = 7
  9. group = 7

Devolveria algo como esto:

Código txt:
Ver original
  1. Array
  2. (
  3.     [account] => Array
  4.         (
  5.             [user] => 6
  6.             [pwd] => 6
  7.             [group] => 6
  8.         )
  9.  
  10.     [account2] => Array
  11.         (
  12.             [user] => 7
  13.             [pwd] => 7
  14.             [group] => 7
  15.         )
  16.  
  17. )

Por ende puede hacer algo como

Código PHP:
Ver original
  1. $matriz_ini = parse_ini_file("ini.txt", true);
  2. echo "<pre>";
  3. print_r($matriz_ini);
  4. echo "</pre>";
  5.  
  6. $buscarCuenta = 6;
  7. $indice = null;
  8. foreach($matriz_ini as $k=>$cuenta){
  9.     if( $cuenta['user'] == $buscarCuenta ){
  10.         $indice = $k;
  11.         break;
  12.     }
  13. }
  14.  
  15. echo "<pre>";
  16. print_r($matriz_ini[$indice]);
  17. echo "</pre>";

Y con eso ya puedes ver que haces si realizas unset a la matriz principal y de allí recreas el archivo con los valores que queden

PD: esa es la idea ya depende de ti colocar validadores y demás

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #21 (permalink)  
Antiguo 29/11/2013, 09:26
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

mira este es el archivo que utiliza la aplicacion que quiero poder hacer en php

Código Java:
Ver original
  1. #include "globals.h"
  2. #include "module-anticasc.h"
  3. #include "oscam-client.h"
  4. #include "oscam-conf.h"
  5. #include "oscam-conf-chk.h"
  6. #include "oscam-conf-mk.h"
  7. #include "oscam-config.h"
  8. #include "oscam-garbage.h"
  9. #include "oscam-lock.h"
  10. #include "oscam-string.h"
  11.  
  12. #define cs_user "oscam.user"
  13.  
  14. static void account_tosleep_fn(const char *token, char *value, void *setting, FILE *f)
  15. {
  16.     int32_t *tosleep = setting;
  17.     if(value)
  18.     {
  19.         *tosleep = strToIntVal(value, cfg.tosleep);
  20.         return;
  21.     }
  22.     if(*tosleep != cfg.tosleep || cfg.http_full_cfg)
  23.         { fprintf_conf(f, token, "%d\n", *tosleep); }
  24. }
  25.  
  26.  
  27.  
  28.  
  29. static void account_c35_suppresscmd08_fn(const char *token, char *value, void *setting, FILE *f)
  30. {
  31.     int8_t *c35_suppresscmd08 = setting;
  32.     if(value)
  33.     {
  34.         *c35_suppresscmd08 = (int8_t)strToIntVal(value, cfg.c35_suppresscmd08);
  35.         return;
  36.     }
  37.     if(*c35_suppresscmd08 != cfg.c35_suppresscmd08 || cfg.http_full_cfg)
  38.         { fprintf_conf(f, token, "%d\n", *c35_suppresscmd08); }
  39. }
  40.  
  41. static void account_umaxidle_fn(const char *token, char *value, void *setting, FILE *f)
  42. {
  43.     uint32_t *umaxidle = setting;
  44.     if(value)
  45.     {
  46.         *umaxidle = (uint32_t)strToIntVal(value, cfg.umaxidle);
  47.         return;
  48.     }
  49.     if(*umaxidle != cfg.umaxidle || cfg.http_full_cfg)
  50.         { fprintf_conf(f, token, "%u\n", *umaxidle); }
  51. }
  52.  
  53.  
  54.  
  55.  
  56. static void account_ncd_keepalive_fn(const char *token, char *value, void *setting, FILE *f)
  57. {
  58.     int8_t *ncd_keepalive = setting;
  59.     int8_t def_value = 0;
  60. #ifdef MODULE_NEWCAMD
  61.     def_value = cfg.ncd_keepalive;
  62. #endif
  63.     if(value)
  64.     {
  65.         *ncd_keepalive = (int8_t)strToIntVal(value, def_value);
  66.         return;
  67.     }
  68.     if(*ncd_keepalive != def_value || cfg.http_full_cfg)
  69.         { fprintf_conf(f, token, "%d\n", *ncd_keepalive); }
  70. }
  71.  
  72. static void account_allowedprotocols_fn(const char *token, char *value, void *setting, FILE *f)
  73. {
  74.     struct s_auth *account = setting;
  75.     if(value)
  76.     {
  77.         account->allowedprotocols = 0;
  78.         if(strlen(value) > 3)
  79.         {
  80.             int i;
  81.             char *ptr, *saveptr1 = NULL;
  82.             for(i = 0, ptr = strtok_r(value, ",", &saveptr1); ptr; ptr = strtok_r(NULL, ",", &saveptr1), i++)
  83.             {
  84.                 if(streq(ptr, "camd33"))   { account->allowedprotocols |= LIS_CAMD33TCP; }
  85.                 else if(streq(ptr, "camd35"))   { account->allowedprotocols |= LIS_CAMD35UDP; }
  86.                 else if(streq(ptr, "cs357x"))   { account->allowedprotocols |= LIS_CAMD35UDP; }
  87.                 else if(streq(ptr, "cs378x"))   { account->allowedprotocols |= LIS_CAMD35TCP; }
  88.                 else if(streq(ptr, "newcamd"))  { account->allowedprotocols |= LIS_NEWCAMD; }
  89.                 else if(streq(ptr, "cccam"))    { account->allowedprotocols |= LIS_CCCAM; }
  90.                 else if(streq(ptr, "csp"))      { account->allowedprotocols |= LIS_CSPUDP; }
  91.                 else if(streq(ptr, "gbox"))     { account->allowedprotocols |= LIS_GBOX; }
  92.                 else if(streq(ptr, "radegast")) { account->allowedprotocols |= LIS_RADEGAST; }
  93.                 // these have no listener ports so it doesn't make sense
  94.                 else if(streq(ptr, "dvbapi"))   { account->allowedprotocols |= LIS_DVBAPI; }
  95.                 else if(streq(ptr, "constcw"))  { account->allowedprotocols |= LIS_CONSTCW; }
  96.                 else if(streq(ptr, "serial"))   { account->allowedprotocols |= LIS_SERIAL; }
  97.             }
  98.         }
  99.         return;
  100.     }
  101.     if(account->allowedprotocols || cfg.http_full_cfg)
  102.     {
  103.         value = mk_t_allowedprotocols(account);
  104.         fprintf_conf(f, token, "%s\n", value);
  105.         free_mk_t(value);
  106.     }
  107. }
  108.  
  109. #ifdef WITH_LB
  110. static void caidvaluetab_fn(const char *token, char *value, void *setting, FILE *f)
  111. {
  112.     CAIDVALUETAB *caid_value_table = setting;
  113.     int limit = streq(token, "lb_retrylimits") ? 50 : 1;
  114.     if(value)
  115.     {
  116.         chk_caidvaluetab(value, caid_value_table, limit);
  117.         return;
  118.     }
  119.     if(caid_value_table->n > 0 || cfg.http_full_cfg)
  120.     {
  121.         value = mk_t_caidvaluetab(caid_value_table);
  122.         fprintf_conf(f, token, "%s\n", value);
  123.         free_mk_t(value);
  124.     }
  125. }
  126. #endif
  127.  
  128.  
  129. static void account_au_fn(const char *token, char *value, void *setting, FILE *f)
  130. {
  131.     struct s_auth *account = setting;
  132.     if(value)
  133.     {
  134.         // set default values for usage during runtime from Webif
  135.         account->autoau = 0;
  136.         if(!account->aureader_list)
  137.             { account->aureader_list = ll_create("aureader_list"); }
  138.         if(streq(value, "1"))
  139.             { account->autoau = 1; }
  140.         ll_clear(account->aureader_list);
  141.         LL_ITER itr = ll_iter_create(configured_readers);
  142.         struct s_reader *rdr;
  143.         char *pch, *saveptr1 = NULL;
  144.         for(pch = strtok_r(value, ",", &saveptr1); pch != NULL; pch = strtok_r(NULL, ",", &saveptr1))
  145.         {
  146.             ll_iter_reset(&itr);
  147.             while((rdr = ll_iter_next(&itr)))
  148.             {
  149.                 if(streq(rdr->label, pch) || account->autoau)
  150.                 {
  151.                     ll_append(account->aureader_list, rdr);
  152.                 }
  153.             }
  154.         }
  155.         return;
  156.     }
  157.     if(account->autoau == 1)
  158.     {
  159.         fprintf_conf(f, token, "%d\n", account->autoau);
  160.     }
  161.     else if(account->aureader_list)
  162.     {
  163.         value = mk_t_aureader(account);
  164.         if(strlen(value) > 0)
  165.             { fprintf_conf(f, token, "%s\n", value); }
  166.         free_mk_t(value);
  167.     }
  168.     else if(cfg.http_full_cfg)
  169.     {
  170.         fprintf_conf(f, token, "%s\n", "");
  171.     }
  172. }
  173.  
  174. static void account_expdate_fn(const char *token, char *value, void *setting, FILE *f)
  175. {
  176.     struct s_auth *account = setting;
  177.     if(value)
  178.     {
  179.         if(!value[0])
  180.         {
  181.             account->expirationdate = (time_t)NULL;
  182.             return;
  183.         }
  184.         int i;
  185.         struct tm cstime;
  186.         char *ptr1, *saveptr1 = NULL;
  187.         memset(&cstime, 0, sizeof(cstime));
  188.         for(i = 0, ptr1 = strtok_r(value, "-/", &saveptr1); i < 3 && ptr1; ptr1 = strtok_r(NULL, "-/", &saveptr1), i++)
  189.         {
  190.             switch(i)
  191.             {
  192.             case 0:
  193.                 cstime.tm_year = atoi(ptr1) - 1900;
  194.                 break;
  195.             case 1:
  196.                 cstime.tm_mon  = atoi(ptr1) - 1;
  197.                 break;
  198.             case 2:
  199.                 cstime.tm_mday = atoi(ptr1);
  200.                 break;
  201.             }
  202.         }
  203.         cstime.tm_hour  = 23;
  204.         cstime.tm_min   = 59;
  205.         cstime.tm_sec   = 59;
  206.         cstime.tm_isdst = -1;
  207.         account->expirationdate = mktime(&cstime);
  208.         return;
  209.     }
  210.     if(account->expirationdate || cfg.http_full_cfg)
  211.     {
  212.         char buf[16];
  213.         struct tm timeinfo;
  214.         localtime_r(&account->expirationdate, &timeinfo);
  215.         strftime(buf, 16, "%Y-%m-%d", &timeinfo);
  216.         fprintf_conf(f, token, "%s\n", streq(buf, "1970-01-01") ? "" : buf);
  217.     }
  218. }
  219.  
  220. static void account_allowedtimeframe_fn(const char *token, char *value, void *setting, FILE *f)
  221. {
  222.     struct s_auth *account = setting;
  223.     if(value)
  224.     {
  225.         account->allowedtimeframe[0] = 0;
  226.         account->allowedtimeframe[1] = 0;
  227.         if(strlen(value))
  228.         {
  229.             int32_t allowed[4];
  230.             if(sscanf(value, "%2d:%2d-%2d:%2d", &allowed[0], &allowed[1], &allowed[2], &allowed[3]) == 4)
  231.             {
  232.                 account->allowedtimeframe[0] = allowed[0] * 60 + allowed[1];
  233.                 account->allowedtimeframe[1] = allowed[2] * 60 + allowed[3];
  234.             }
  235.             else
  236.             {
  237.                 fprintf(stderr, "WARNING: Value '%s' is not valid for allowedtimeframe (hh:mm-hh:mm)\n", value);
  238.             }
  239.         }
  240.         return;
  241.     }
  242.     if(account->allowedtimeframe[0] && account->allowedtimeframe[1])
  243.     {
  244.         fprintf_conf(f, token, "%02d:%02d-%02d:%02d\n",
  245.                      account->allowedtimeframe[0] / 60, account->allowedtimeframe[0] % 60,
  246.                      account->allowedtimeframe[1] / 60, account->allowedtimeframe[1] % 60);
  247.     }
  248.     else if(cfg.http_full_cfg)
  249.     {
  250.         fprintf_conf(f, token, "%s\n", "");
  251.     }
  252. }
  253.  
  254. static void account_tuntab_fn(const char *token, char *value, void *setting, FILE *f)
  255. {
  256.     TUNTAB *ttab = setting;
  257.     if(value)
  258.     {
  259.         if(strlen(value) == 0)
  260.         {
  261.             clear_tuntab(ttab);
  262.         }
  263.         else
  264.         {
  265.             chk_tuntab(value, ttab);
  266.         }
  267.         return;
  268.     }
  269.     if(ttab->bt_caidfrom[0] || cfg.http_full_cfg)
  270.     {
  271.         value = mk_t_tuntab(ttab);
  272.         fprintf_conf(f, token, "%s\n", value);
  273.         free_mk_t(value);
  274.     }
  275. }
  276.  
  277. void group_fn(const char *token, char *value, void *setting, FILE *f)
  278. {
  279.     uint64_t *grp = setting;
  280.     if(value)
  281.     {
  282.         char *ptr1, *saveptr1 = NULL;
  283.         *grp = 0;
  284.         for(ptr1 = strtok_r(value, ",", &saveptr1); ptr1; ptr1 = strtok_r(NULL, ",", &saveptr1))
  285.         {
  286.             int32_t g;
  287.             g = atoi(ptr1);
  288.             if(g > 0 && g < 65)
  289.                 { *grp |= (((uint64_t)1) << (g - 1)); }
  290.         }
  291.         return;
  292.     }
  293.     if(*grp || cfg.http_full_cfg)
  294.     {
  295.         value = mk_t_group(*grp);
  296.         fprintf_conf(f, token, "%s\n", value);
  297.         free_mk_t(value);
  298.     }
  299. }
  300.  
  301. void services_fn(const char *token, char *value, void *setting, FILE *f)
  302. {
  303.     SIDTABS *sidtabs = setting;
  304.     if(value)
  305.     {
  306.         strtolower(value);
  307.         chk_services(value, sidtabs);
  308.         return;
  309.     }
  310.     value = mk_t_service(sidtabs);
  311.     if(strlen(value) > 0 || cfg.http_full_cfg)
  312.         { fprintf_conf(f, token, "%s\n", value); }
  313.     free_mk_t(value);
  314. }
  315.  
  316. void class_fn(const char *token, char *value, void *setting, FILE *f)
  317. {
  318.     CLASSTAB *cltab = setting;
  319.     if(value)
  320.     {
  321.         strtolower(value);
  322.         chk_cltab(value, cltab);
  323.         return;
  324.     }
  325.     value = mk_t_cltab(cltab);
  326.     if(strlen(value) > 0 || cfg.http_full_cfg)
  327.     {
  328.         fprintf_conf(f, token, "%s\n", value);
  329.         free_mk_t(value);
  330.     }
  331. }
  #22 (permalink)  
Antiguo 29/11/2013, 09:27
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

continua el archivo

Código Java:
Ver original
  1. #ifdef CS_ANTICASC
  2. static void account_fixups_fn(void *var)
  3. {
  4.     struct s_auth *account = var;
  5.     if(account->ac_users < -1) { account->ac_users = DEFAULT_AC_USERS; }
  6.     if(account->ac_penalty < -1) { account->ac_penalty = DEFAULT_AC_PENALTY; }
  7. }
  8. #endif
  9.  
  10. #define OFS(X) offsetof(struct s_auth, X)
  11. #define SIZEOF(X) sizeof(((struct s_auth *)0)->X)
  12.  
  13. static const struct config_list account_opts[] =
  14. {
  15. #ifdef CS_ANTICASC
  16.     DEF_OPT_FIXUP_FUNC(account_fixups_fn),
  17. #endif
  18.     DEF_OPT_INT8("disabled"             , OFS(disabled),                0),
  19.     DEF_OPT_SSTR("user"                 , OFS(usr),                     "", SIZEOF(usr)),
  20.     DEF_OPT_STR("pwd"                   , OFS(pwd),                     NULL),
  21. #ifdef WEBIF
  22.     DEF_OPT_STR("description"           , OFS(description),             NULL),
  23. #endif
  24.     DEF_OPT_STR("hostname"              , OFS(dyndns),                  NULL),
  25.     DEF_OPT_FUNC("caid"                 , OFS(ctab),                    check_caidtab_fn),
  26.     DEF_OPT_INT8("uniq"                 , OFS(uniq),                    0),
  27.     DEF_OPT_UINT8("sleepsend"           , OFS(c35_sleepsend),           0),
  28.     DEF_OPT_INT32("failban"             , OFS(failban),                 0),
  29.     DEF_OPT_INT8("monlevel"             , OFS(monlvl),                  0),
  30.     DEF_OPT_FUNC("sleep"                , OFS(tosleep),                 account_tosleep_fn),
  31.     DEF_OPT_FUNC("suppresscmd08"        , OFS(c35_suppresscmd08),       account_c35_suppresscmd08_fn),
  32.     DEF_OPT_FUNC("umaxidle"                   , OFS(umaxidle),                          account_umaxidle_fn),
  33.     DEF_OPT_FUNC("keepalive"            , OFS(ncd_keepalive),           account_ncd_keepalive_fn),
  34.     DEF_OPT_FUNC("au"                   , 0,                            account_au_fn),
  35.     DEF_OPT_UINT8("emmreassembly"       , OFS(emm_reassembly),          2),
  36.     DEF_OPT_FUNC("expdate"              , 0,                            account_expdate_fn),
  37.     DEF_OPT_FUNC("allowedprotocols"     , 0,                            account_allowedprotocols_fn),
  38.     DEF_OPT_FUNC("allowedtimeframe"     , 0,                            account_allowedtimeframe_fn),
  39.     DEF_OPT_FUNC("betatunnel"           , OFS(ttab),                    account_tuntab_fn),
  40.     DEF_OPT_FUNC("group"                , OFS(grp),                     group_fn),
  41.     DEF_OPT_FUNC("services"             , OFS(sidtabs),                 services_fn),
  42.     DEF_OPT_FUNC_X("ident"              , OFS(ftab),                    ftab_fn, FTAB_ACCOUNT | FTAB_PROVID),
  43.     DEF_OPT_FUNC_X("chid"               , OFS(fchid),                   ftab_fn, FTAB_ACCOUNT | FTAB_CHID),
  44.     DEF_OPT_FUNC("class"                , OFS(cltab),                   class_fn),
  45. #ifdef CS_CACHEEX
  46.     DEF_OPT_INT8("cacheex"              , OFS(cacheex.mode),            0),
  47.     DEF_OPT_INT8("cacheex_maxhop"       , OFS(cacheex.maxhop),          0),
  48.     DEF_OPT_FUNC("cacheex_ecm_filter"   , OFS(cacheex.filter_caidtab),  cacheex_hitvaluetab_fn),
  49.     DEF_OPT_UINT8("cacheex_drop_csp"    , OFS(cacheex.drop_csp),        0),
  50.     DEF_OPT_UINT8("cacheex_allow_request"   , OFS(cacheex.allow_request),   1),
  51. #endif
  52. #ifdef MODULE_CCCAM
  53.     DEF_OPT_INT32("cccmaxhops"          , OFS(cccmaxhops),              DEFAULT_CC_MAXHOPS),
  54.     DEF_OPT_INT8("cccreshare"           , OFS(cccreshare),              DEFAULT_CC_RESHARE),
  55.     DEF_OPT_INT8("cccignorereshare"     , OFS(cccignorereshare),        DEFAULT_CC_IGNRSHR),
  56.     DEF_OPT_INT8("cccstealth"           , OFS(cccstealth),              DEFAULT_CC_STEALTH),
  57. #endif
  58. #ifdef CS_ANTICASC
  59.     DEF_OPT_INT32("fakedelay"           , OFS(ac_fakedelay),            -1),
  60.     DEF_OPT_INT32("numusers"            , OFS(ac_users),                DEFAULT_AC_USERS),
  61.     DEF_OPT_INT8("penalty"              , OFS(ac_penalty),              DEFAULT_AC_PENALTY),
  62. #endif
  63. #ifdef WITH_LB
  64.     DEF_OPT_INT32("lb_nbest_readers"    , OFS(lb_nbest_readers),        -1),
  65.     DEF_OPT_INT32("lb_nfb_readers"      , OFS(lb_nfb_readers),          -1),
  66.     DEF_OPT_FUNC("lb_nbest_percaid"     , OFS(lb_nbest_readers_tab),    caidvaluetab_fn),
  67. #endif
  68.     DEF_LAST_OPT
  69. };
  70.  
  71. void chk_account(const char *token, char *value, struct s_auth *account)
  72. {
  73.     if(config_list_parse(account_opts, token, value, account))
  74.         { return; }
  75.     else if(token[0] != '#')
  76.         { fprintf(stderr, "Warning: keyword '%s' in account section not recognized\n", token); }
  77. }
  78.  
  79. void account_set_defaults(struct s_auth *account)
  80. {
  81.     config_list_set_defaults(account_opts, account);
  82. }
  83.  
  84. struct s_auth *init_userdb(void)
  85. {
  86.     FILE *fp = open_config_file(cs_user);
  87.     if(!fp)
  88.         { return NULL; }
  89.  
  90.     struct s_auth *authptr = NULL;
  91.     int32_t tag = 0, nr = 0, expired = 0, disabled = 0;
  92.     char *token;
  93.     struct s_auth *account = NULL;
  94.     struct s_auth *probe = NULL;
  95.     if(!cs_malloc(&token, MAXLINESIZE))
  96.         { return NULL; }
  97.  
  98.     while(fgets(token, MAXLINESIZE, fp))
  99.     {
  100.         int32_t l;
  101.         void *ptr;
  102.  
  103.         if((l = strlen(trim(token))) < 3)
  104.             { continue; }
  105.         if(token[0] == '[' && token[l - 1] == ']')
  106.         {
  107.             token[l - 1] = 0;
  108.             tag = streq("account", strtolower(token + 1));
  109.             if(!cs_malloc(&ptr, sizeof(struct s_auth)))
  110.                 { break; }
  111.             if(account)
  112.                 { account->next = ptr; }
  113.             else
  114.                 { authptr = ptr; }
  115.  
  116.             account = ptr;
  117.             account_set_defaults(account);
  118.             nr++;
  119.  
  120.             continue;
  121.         }
  122.  
  123.         if(!tag)
  124.             { continue; }
  125.         char *value = strchr(token, '=');
  126.         if(!value)
  127.             { continue; }
  128.  
  129.         *value++ = '\0';
  130.  
  131.         // check for duplicate useraccounts and make the name unique
  132.         if(streq(trim(strtolower(token)), "user"))
  133.         {
  134.             for(probe = authptr; probe; probe = probe->next)
  135.             {
  136.                 if(!strcmp(probe->usr, trim(value)))
  137.                 {
  138.                     fprintf(stderr, "Warning: duplicate account '%s'\n", value);
  139.                     strncat(value, "_x", sizeof(probe->usr) - strlen(value) - 1);
  140.                 }
  141.             }
  142.         }
  143.         chk_account(trim(strtolower(token)), trim(value), account);
  144.     }
  145.     free(token);
  146.     fclose(fp);
  147.  
  148.     for(account = authptr; account; account = account->next)
  149.     {
  150.         if(account->expirationdate && account->expirationdate < time(NULL))
  151.             { ++expired; }
  152.         if(account->disabled)
  153.             { ++disabled; }
  154.     }
  155.     cs_log("userdb reloaded: %d accounts loaded, %d expired, %d disabled", nr, expired, disabled);
  156.     return authptr;
  157. }
  158. int32_t init_free_userdb(struct s_auth *ptr)
  159. {
  160.     int32_t nro;
  161.     for(nro = 0; ptr; nro++)
  162.     {
  163.         struct s_auth *ptr_next;
  164.         ptr_next = ptr->next;
  165.         ll_destroy(ptr->aureader_list);
  166.         ptr->next = NULL;
  167.         config_list_gc_values(account_opts, ptr);
  168.         add_garbage(ptr);
  169.         ptr = ptr_next;
  170.     }
  171.     cs_log("userdb %d accounts freed", nro);
  172.     return nro;
  173. }
  174.  
  175. int32_t write_userdb(void)
  176. {
  177.     struct s_auth *account;
  178.     FILE *f = create_config_file(cs_user);
  179.     if(!f)
  180.         { return 1; }
  181.     for(account = cfg.account; account; account = account->next)
  182.     {
  183.         fprintf(f, "[account]\n");
  184.         config_list_apply_fixups(account_opts, account);
  185.         config_list_save(f, account_opts, account, cfg.http_full_cfg);
  186.         fprintf(f, "\n");
  187.     }
  188.     return flush_config_file(f, cs_user);
  189. }
  190.  
  191. void cs_accounts_chk(void)
  192. {
  193.     struct s_auth *account1, *account2;
  194.     struct s_auth *new_accounts = init_userdb();
  195.     cs_writelock(&config_lock);
  196.     struct s_auth *old_accounts = cfg.account;
  197.     for(account1 = cfg.account; account1; account1 = account1->next)
  198.     {
  199.         for(account2 = new_accounts; account2; account2 = account2->next)
  200.         {
  201.             if(!strcmp(account1->usr, account2->usr))
  202.             {
  203.                 account2->cwfound    = account1->cwfound;
  204.                 account2->cwcache    = account1->cwcache;
  205.                 account2->cwnot      = account1->cwnot;
  206.                 account2->cwtun      = account1->cwtun;
  207.                 account2->cwignored  = account1->cwignored;
  208.                 account2->cwtout     = account1->cwtout;
  209.                 account2->emmok      = account1->emmok;
  210.                 account2->emmnok     = account1->emmnok;
  211.                 account2->firstlogin = account1->firstlogin;
  212.                 ac_copy_vars(account1, account2);
  213.             }
  214.         }
  215.     }
  216.     cs_reinit_clients(new_accounts);
  217.     cfg.account = new_accounts;
  218.     init_free_userdb(old_accounts);
  219.     ac_clear();
  220.     cs_writeunlock(&config_lock);
  221. }
  #23 (permalink)  
Antiguo 29/11/2013, 09:35
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 2 meses
Puntos: 206
Respuesta: duda en buscar, editar y eliminar en archivo .user

Te voy a ayudar a resolverlo, pero no te lo voy a resolver.

Para empezar, quiero que me pongas un código PhP que sea capaz de leer ese fichero, y meterlo a un ARRAY línea a línea.
Es decir, que cada valor del array sea una linea. En la posición 0, la primera llínea, en 1, la segunda, etcétera. Ignora las líneas en blanco, no las metas en el array.

Cuando lo tengas, y lo postees con éxito, te diré el siguiente paso.
  #24 (permalink)  
Antiguo 29/11/2013, 09:41
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 meses
Puntos: 397
Respuesta: duda en buscar, editar y eliminar en archivo .user

Creo que te has equivocado seriamente con lo que acabas de escribir . Muchos de los que están en el foro de PHP solo están enfocados en ese lenguaje y no tienen muchos conocimientos de otros lenguajes (a excepción de pocas personas como el gato gruñón que acaba de comentar ) y según lo que muestras eso no es código Java si no C (puede que me equivoque igual no se mucho de otros lenguajes informáticos pero mi poca experiencia me dice que se parecen mucho) así que sé realista y en vez de mostrar un código que para muchos es chino, podrías especificar que es lo que quieres hacer exactamente. Sin eso es imposible guiarte.

Ahora bien cuando te refieres a eliminar los datos de un usuario solo te referias a ese archivo no?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #25 (permalink)  
Antiguo 29/11/2013, 10:15
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

Código PHP:
Ver original
  1. //guardar contenido en un array
  2. $cont = 'dato.user';
  3.  
  4. $contenido_usuarios = file_get_contents($cont);
  5. $array_todos_usuarios = explode('[account] ', $contenido_usuarios);
  6. echo $contenido_usuarios;
  7. //echo $array_todos_usuarios;
  8.  
  9. foreach ($array_todos_usuarios as $usuario_individual) {
  10. $datos_del_usuario = explode(' ', $usuario_individual);
  11. echo $datos_del_usuario;
  12. }//DEL FOREACH
  #26 (permalink)  
Antiguo 29/11/2013, 11:09
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 2 meses
Puntos: 206
Respuesta: duda en buscar, editar y eliminar en archivo .user

Bueno, no hace lo que te pedí, tiene problemas (tenías que haberte dado cuenta), pero como lo has intentado te lo corrijo, y además te añado lo de normalizar el fichero, que es eliminar las lineas en blanco y los espacios, que no son necesarios para procesar un fichero de datos con el formato que tienes:
Código PHP:
Ver original
  1. <?php
  2. //Funciones
  3. function leerFicheroCrudo($fichero){
  4.     //Lee un fichero y lo devuelve como un array, línea a línea
  5.     $data = file_get_contents($fichero);
  6.     return explode(PHP_EOL, $data);
  7. }
  8. function normalizar($array){
  9.     //Elimina espacios en blanco, filas vacías y normaliza el array
  10.     $normalizado=array();
  11.     foreach ($array as $linea) {
  12.         $linea=preg_replace( "/\s+/", "", $linea );
  13.         if ($linea!=="") $normalizado[]=$linea;
  14.     }
  15.     return $normalizado;
  16. }
  17. function leerFicheroNormalizado($fichero){
  18.     return normalizar(leerFicheroCrudo($fichero));
  19. }
  20.  
  21. //MAIN
  22. $fichero="user.txt";
  23. $datos=leerFicheroNormalizado($fichero);
  24.  
  25. echo implode($datos,"<br/>");
Como nota, PHP_EOL es un string con el caracter FIN DE LINEA del sistema operativo donde corre el servidor, porque cada sistema operativo tiene su propio carácter fin de línea, y usar "\n" es un error.

Bien, ahora tienes un array con todas las lineas útiles del fichero normalizadas, es decir, sin espacios en blanco. pero es horrible haer lo que quieres usando este array. Es mejor transfiormar ese array en una estructura de datos útil.

Por ejemplo, para tu ejemplo:
Código BASH:
Ver original
  1. [account]
  2. user = 6
  3. pwd = 6
  4. group = 6
  5.  
  6. [account]
  7. user = 7
  8. pwd = 7
  9. group = 7
  10.  
  11. [mas_cosas]
  12. atributo=valor
Quiero que hagas una función, que pasándole un array normalizado, me devuelva el siguiente array PHP:

Código PHP:
Ver original
  1. $datos["acount"][0]=array("user=6", "pwd=6",  "group=6");
  2. $datos["acount"][1]=array("user=7", "pwd=7",  "group=7");
  3. $datos["mas_cosas"][0]=array("atributo=valor");

Hazlo y pónmelo. Si lo consigues y entiendes, incluso es posible que hayas captado la filosofía y sepas hacia donde vamos.
La función ISSET te servirá para saber si existe por ejemplo $datos["cualquier cosa"], asi sabrás si tienes que declara un nuevo array para esa posición, o sólo añadirle valores.

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

ya logre poder crear la cuenta con esto

Código PHP:
Ver original
  1. //crear cuenta
  2. if( isset($_REQUEST["user"]) and isset($_REQUEST["pwd"]) and isset($_REQUEST["group"]) ){
  3. $fp = fopen("dato.user","a");
  4. fwrite($fp, "".PHP_EOL);
  5. fwrite($fp, "[account]".PHP_EOL);
  6. fwrite($fp, "user                          = ".$_REQUEST["user"]."".PHP_EOL);
  7. fwrite($fp, "pwd                           = ".$_REQUEST["pwd"]."".PHP_EOL);
  8. fwrite($fp, "group                         = ".$_REQUEST["group"]."".PHP_EOL);
  9. fclose($fp);  
  10. }

me falta buscar para eliminar y buscar para editar
  #28 (permalink)  
Antiguo 29/11/2013, 14:29
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

haora tengo esto para poder buscar la cuenta y mostrar en que linia esta para asi poder borar la cuenta

Código PHP:
Ver original
  1. $palabra="demo1";    
  2. $pos = 0;
  3.     // Podemos mostrar / trabajar con todas las líneas:
  4. if( $palabra ){
  5. foreach($datos as $linea){
  6.     if (strstr($linea,$palabra)){
  7.     echo "si esta la palabra $linea, esta en la linea : ".$pos;
  8.     }
  9.    }
  10.    $pos++;
  11. }

pero solo encuentra el usuario de la linia pero no me indica la linia que es ????
  #29 (permalink)  
Antiguo 29/11/2013, 14:41
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años
Puntos: 96
Respuesta: duda en buscar, editar y eliminar en archivo .user

Código PHP:
Ver original
  1. foreach($datos as $k=>$v){//$k es el indice, o sea, la linea y $v es el valor
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #30 (permalink)  
Antiguo 29/11/2013, 15:10
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: duda en buscar, editar y eliminar en archivo .user

ok perfecto haora lo que necesito es poder eliminar ejemplo si hago esta busqueda

Código PHP:
Ver original
  1. $palabra=$_REQUEST["user"];    
  2. $pos = 0;
  3.     // Podemos mostrar / trabajar con todas las líneas:
  4. if( $palabra ){
  5.    
  6. foreach($datos as $pos=>$linea){
  7.     if (strstr($linea,$palabra)){
  8.     echo "si esta la palabra $linea, esta en la linea : ".$pos;
  9.     }
  10.    }
  11.    $pos++;
  12. }

user=demo1

pueda borar

todos sus datos

archivo dato.user

Código datos.user:
Ver original
  1. [account]
  2. user                          = demo1
  3. pwd                           = pw1
  4. group                         = 5
  5.  
  6. [account]
  7. user                          = demo2
  8. pwd                           = pw2
  9. group                         = 5
  10.  
  11. [account]
  12. user                          = demo3
  13. pwd                           = pw3
  14. group                         = 5
  15.  
  16. [account]
  17. user                          = demo4
  18. pwd                           = pw4
  19. group                         = 5

la cuenta comienza en [account] y finaliza en la otra cuenta que comienza [account] como podria hacer esto posible y gracias a todos por la ayuda

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 10:59.