Foros del Web » Programando para Internet » PHP »

Generar arichivos .reg con PHP

Estas en el tema de Generar arichivos .reg con PHP en el foro de PHP en Foros del Web. hola amigos quisiera saber si es posible y/o de que forma puedo hacer lo siguiente. tengo la idea de genrear un formulario en el que ...
  #1 (permalink)  
Antiguo 17/08/2006, 16:32
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
Generar arichivos .reg con PHP

hola amigos quisiera saber si es posible y/o de que forma puedo hacer lo siguiente.

tengo la idea de genrear un formulario en el que se ingresen los datos para configurar un mail para outlook express este asu vez al pulsar el boton enviar lo que hara seria recoger esos datos y meterlos a un archivode registro.reg el cual se descargara de modo que el usuario solo devera rellenar los datos que pide y listo.

alguna idea de comoprograr mi script php...?
  #2 (permalink)  
Antiguo 17/08/2006, 18:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tu tienes claro que formato tiene que tener ese tipo de archivo? .. separadores de lìnea .. comandos? .. codificación? .. etc ..?

Bueno .. una vez que lo tengas .. ya que el objetivo como lo planteas es entregarlo a descargar .. no hace falta ni que generes un archivo fìsicamente en el servidor. Lo generas sobre una variable y lo entregas al buffer de salida de PHP indicando vìa cabeceras HTTP que el archivo generado es para descargar:

Las cabeceras HTTP con PHP se envian por:
header()
www.php.net/header

Y "entregar el dato generado al buffer de salida" (menudo nombre para lo que es en realidad) .. es tan sòlo hacer un:

echo $tu_Reg_generado;

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/08/2006, 12:25
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
Oh si claro que tengo definido el tipo de archivo..es mas de hecho ya lo tengo hecho, la cosa seria nada mas ver como puedo modificar algunos datos de el mismo y reemplasarlos porlos datos que el usuario acomode en el formulario. enseguida pongo el codigoque contiene el archivo.reg
como veras solo habria que modificar datos explicitos de este codigo y hacer que lo mande a descargar ya con los datos puestos sera mucho problema hacer eso??
Código HTML:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\[email protected]]
"DCEmail"=dword:00000002
"POP3 Server"="mail.genigraphix.net"
"POP3 Port"=dword:0000006e
"SMTP Server"="mail.genigraphix.net"
"SMTP Port"=dword:00000019
"Connection Type"=dword:00000003
"POP3 User Name"="[email protected]"
"SMTP Display Name"="[email protected]"
"SMTP Email Address"="[email protected]"
"SMTP Reply To Email Address"="[email protected]"
"SMTP Organization Name"=""
"Account Name"="[email protected]"
"POP3 Timeout"=dword:0000003c
"SMTP Timeout"=dword:0000003c
"POP3 Secure Connection"=dword:00000000
"Leave Mail On Server"=dword:00000000
"POP3 Skip Account"=dword:00000000
"POP3 Prompt for Password"=dword:00000000
"SMTP User Name"="[email protected]"
"SMTP Use Sicily"=dword:00000003
"SMTP Secure Connection"=dword:00000000
"SMTP Split Messages"=dword:00000000
"SMTP Prompt for Password"=dword:00000000
  #4 (permalink)  
Antiguo 18/08/2006, 13:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. que problema tienes concretamente?

* Como abrir el archivo sobre una variable de PHP para procesarlo?
* Como modificar una "línea" concreta de lo que lees del archivo? (en ese caso aclara si esa estructura es fija o variable en líneas y los items ahí representados).
* Como generar el archivo (y entregarlo a descargar directamente)?

Todo lo puedes ir resolviendo con funciones como file() que te lee ese archivo sobre un array .. o file_get_contents() que lo hace sobre un variable común (string) ..

Depende del archivo y su estructura .. podrías acceder fácilmente a un dato concreto (con file() por ejemplo como te devuelve un array .. por indice directo), en casos más complejos necesitarías usar expresiones regulares (preg_match_all() y funciones similares + dar con la expresión regular correcta .. cosa que no es de PHP directamente (por si buscas información al respecto).

Gurdar tu archivo será cosa de usar fopen() y fwrite() entre otras funciones. Y si lo quieres entregar directamente a descargar .. ya te comenté que debes usar header() y las cabeceras HTTP adecuadas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/08/2006, 14:27
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
ok ire intentando algunos de los tips que me das
puesto que la idea es solamente generar lo mismo que vez en el ejemplo con la diferencia de que los datos como el correo y el servidor smtp seran cambiados y entregados en el archivo para descargar.
vere que sale muchas gracias por los tips estoy revisando los links queme dejaste
  #6 (permalink)  
Antiguo 18/08/2006, 14:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me pregunto ..

Si el archivo que tienes ".reg" tiene esa estructura tan fija .. por qué no lo defines com una "plantilla":

Código PHP:
<?
$nombre_archivo
="configuracion_outlook.reg";

$email="[email protected]";
$smtp="mail.tal.tal";
$pop="mail.tal.tal";
$nombre_cuenta="blabla blabla";
// etc con el resto ..

// Tu "string" del registro .. uso sintax tipo "Heredoc" para respetar formato rápidamente y saltos de línea ..

$reg=<<<TEXTO
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\$email]
"DCEmail"=dword:00000002
"POP3 Server"="$pop"
"POP3 Port"=dword:0000006e
"SMTP Server"="$smtp"
"SMTP Port"=dword:00000019
"Connection Type"=dword:00000003
"POP3 User Name"="$email"
"SMTP Display Name"="$email"
"SMTP Email Address"="$email"
"SMTP Reply To Email Address"="$email"
"SMTP Organization Name"=""
"Account Name"="$nombre_cuenta"
"POP3 Timeout"=dword:0000003c
"SMTP Timeout"=dword:0000003c
"POP3 Secure Connection"=dword:00000000
"Leave Mail On Server"=dword:00000000
"POP3 Skip Account"=dword:00000000
"POP3 Prompt for Password"=dword:00000000
"SMTP User Name"="[email protected]"
"SMTP Use Sicily"=dword:00000003
"SMTP Secure Connection"=dword:00000000
"SMTP Split Messages"=dword:00000000
"SMTP Prompt for Password"=dword:00000000
TEXTO;

header ("Content-type: text/plain");
header ('Content-Disposition: attachment; filename="'.$nombre_archivo.'"');
echo 
$reg;

?>
Sería algo así .. Para las pruebas .. quita los header() y haz un echo a $reg para ver si es lo que esperas una vez generado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 18/08/2006, 15:09
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
ok veamos estoy a medios chiles como decimos por aca esto que me acabas de pasar seria para hacer un "Test" mas lo que no comprendo es si la sintaxis del archivo .reg deve ir plasmada en el mismo php y si es asi ps estaria mal o almenos es me dice la salida de errores me da errores de parse apartir de la linea 13 que es donde comienza la sintaxis del reg habra que delcararlas como variables tambien?
  #8 (permalink)  
Antiguo 18/08/2006, 15:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Veamos si me equivoqué con la sintax HereDoc .. Como no sea que tenga problemas con el [ o el ] .. mmm en cualquier caso eso se debería solventar "escapando" ese tipo de caracteres .. con un \ delante.

Por si quieres ver sobre sintax HereDoc:
http://www.php.net/manual/en/languag...syntax.heredoc

La "sintax" de tu .reg debe ir "plasmada" tal cual te presento . .sobre una variable (string) .. para facilitar su "lectura" y modificación te propongo el uso de la sintax tipo "HereDoc".

Si te fijas .. donde van tus datos personalizados; e-mail .. servidores .. etc .. ahí uso -variables- de PHP .. vamos ... una simple concatenación de variables.

Si no te acomoda la sintax HereDoc .. usa sintax normal .. crea N variables y las concatenas tipo:


$reg = "[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\".$email."]\n";
$reg .= ""\DCEmail"\=dword:00000002\n";


Aquí es necesario que indiques expresamente el salto de línea para tu archivo de texto plano: \n (o \n\r) .. Ojo con las comillas y sus "escape".

Un saludo,



Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 18/08/2006 a las 15:28
  #9 (permalink)  
Antiguo 18/08/2006, 15:34
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
waa sin duda esto cada vez me esta agradando mas...nada mas por preguntar ya estando aqui.

que pasa si en evez de mandarme un archivo a descargar lo que hace es `ponerme el texto plano?

jejeje espero que no sea una boberia de... "MI CHAVO ES UNA PRUEVA ESE ES EL RESULTADO ESPERADO ¬¬" pero de hecho estoy provando lia a liena y cada que lo mando tarda algo en abrir la pagina y me muestra el resultado devera ser asi?
  #10 (permalink)  
Antiguo 18/08/2006, 15:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No entendí ...

Como lo ejecutas y que es lo que obtienes? .. Debería presentarse la ventana de "descarga" con el nombre del archivo que se indicó vía cabecera HTTP.

Es cierto que mucho navegador no interpreta bien las cabeceras HTTP que se le envian .. podrías probar con otras.

Te recomiendo visitar la documentación de header() y ver los comentarios de los usuarios:

www.php.net/header

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 19/08/2006, 14:20
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
que tal pues adivina que? ja ya quedo!! yo estaba un poco confundido por el hecho de que no es lo mismo hacer la prueba en mi servidor local quitando los headers puestoque si haces eso el texto que te precenta sale lineal, sin saltos de linea ni nada si se hace con "heredoc" pero al ejecutarlas con los headers ya hace la descarga del archivo y al revisarlo efectivamente te respeta cada salto de linea, comillas y llaves que pones =)
en un rato mas pondre aqui los codigos php para dejarlo como aporte MUCHAS GRACIAS Cluster la verdad me sacaste de un apuro!!
  #12 (permalink)  
Antiguo 21/08/2006, 06:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Falopy Ver Mensaje
que tal pues adivina que? ja ya quedo!! yo estaba un poco confundido por el hecho de que no es lo mismo hacer la prueba en mi servidor local quitando los headers puestoque si haces eso el texto que te precenta sale lineal, sin saltos de linea ni nada si se hace con "heredoc" pero al ejecutarlas con los headers ya hace la descarga del archivo y al revisarlo efectivamente te respeta cada salto de linea, comillas y llaves que pones =)
en un rato mas pondre aqui los codigos php para dejarlo como aporte MUCHAS GRACIAS Cluster la verdad me sacaste de un apuro!!
En ese caso lo que debes ententer que un "navegador" entiende como salto de línea un código HTML (tag): <br> .. y si te fijas tu código para tu archivo se genera un código de control /n que es un "salto de línea" para un archivo de texto plano (así como trabajan las "impresoras de matriz de punto" para que te hagas una idea en su base ..).

Ese es el "meollo" del asunto. Entendiendo eso veras claro muchas otras cosas más.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 11:16.