[perl] ayuda en perl
Carla Lorena Larios
lorena@mp.lex.gob.gt
Mon, 27 Mar 2000 08:35:34 -0600
UUhhmmmm por cierto....vi en tu pagina que trabajas en la
DGESCA.....uuhhm yo recibi un par de cursos de parte de personal de ahi
hace un par de años en la USAC (cuando trabaje ahi) y ahora estoy viendo
que la UNAM organizara un curso sobre tecnologia de redes junto con la
ISOC y otras instituciones.
Yo soy miembro de la ISOC y quiero participar en el curso de este año en
la UNAM, sabes cuando ira a estar listos los formularios de inscripcion
y becas? tengo ratos de estar entrando a la pagina y no hay modo....
http://www.walc2000.unam.mx/
Saludos...y te cuento que aun estoy descifrando el codio que me
enviaste.....
Bolo Lacertus wrote:
>
> Saludos!!!
>
> Mmmm, ok, mando un script, basado en algo similar que hicimos en la UNAM
> para publicar materiales sencillos, modificado para que que genere una
> lista de registros de formato:
>
> "campo1","campo2","campo3","campo4",imagen.ext
>
> Las comillas son por seguridad ya que algunos DBMS las exigen, no le
> pondré filtros para evitar las comillas en los campos, pero recomiendo
> fuertemente que "limpies" las cadenas para evitar todo tipo de
> caracteres indeseables.
>
> Para simplificar aún mas el programa, le pongo que guarde solo cuatro
> campos, literalmente "campo1","campo2","campo3","campo4" capturados en
> la forma y un campo de tipo archivo de la misma.
>
> El script va a necesitar que le cambies los nombres de los campos y que
> le agreges mas en caso de que los necesites, pero en general debe jalar
> bien (no lo he probado, pero es una versión reducida de uno que tenemos
> en producción por lo que en el peor de los casos rompí algunos ciclos o
> deje errores de sintaxis al eliminar cosas).
>
> Sin embargo, esto hace todo lo que necesitas, agrego despues del script
> nuestros segmentos de HTML como ejemplos de lo que abría que poner el
> inircv.htmlp y finrcv.htmlp.
>
> Carla Lorena Larios wrote:
> > Necesito ayuda con un rollo de un formulario en la web el cual debe
> > capturar informacion, en texto y una
> > famosa foto que los usuarios deben enviar..........
>
> -------------inicia programa------------
> #!/usr/bin/perl
>
> # Programa recepcion de texto y archivos para presentacion por paginas
> 2.0
> # Daniel Sol Llaven
> # 25 de Abril del 2000
>
> #Librerias
> use CGI;
> use rutinas;
>
> #Variables de configuracion
>
> #Localizacion de los archivos de salida.
> #Directorio para poner las imagenes
> $media="/usr/users/pumasi/html-docs/media";
> #Archivo para colocar los registros
> $registros="/usr/users/pumasi/registros.csv";
>
> #Ok, nosotros solemos colocar el HTML que el CGI responde en arvhivos
> # Separados de modo que luego sea mas facil cambiar el formato, a estos
> # archivos los llamamos HTMLP
>
> #Encabezado de respuesta (que estara bajo el directorio $textos)
> $textos="/usr/users/pumasi/html-docs/htmlp";
> $htmlpinicio="inircv.htmlp";
> #Terminacion de respuesta (tambien bajo $textos)
> $htmlpfin="finrcv.htmlp";
>
> #inicialización del CGI
> $def=new CGI;
>
> #Verificación de parámetros
> if(($def->param('campo1') eq "") ||($def->param('campo2') eq "")
> ||($def->param('campo3') eq "") ||($def->param('campo4') eq ""))
> {
> #no se recibieron todos los campos del Resumen
> error(4,"Modo incorrecto de ejecutar el CGI");
> }
>
> if(!open(AE,"$textos/$htmlpinicio"))
> {
> error(1,"Archivo de presentacion");
> }
>
> #Enviar el inicio de la forma
> print "Content-type: text/html\n\n";
> while(<AE>)
> {
> print;
> }
> close AE;
>
> #Recepcion del archivo
> $archivo=$def->param('archivo');
>
> if($archivo eq "")
> {
> #error, no se entrego ningun archivo
> print "<h1>Error!</h1>El archivo no se recibió con éxito
> o no ";
> print "se invoco el script de modo adecuado, por favor vuelva a
> intentar, ";
> print "asegurandose de dar los datos correctos del
> archivo<p>\n</body></html>";
> print $def->dump;
> exit;
> }
>
> print "El nombre del archivo enviado es <b>$archivo</b>";
> if($archivo=~/^\//)
> {
> print " y parece ser de\n<b>UNIX</b>";
> }
> else
> {
> if($archivo=~/\w\:\\/)
> {
> print "y parece ser de\n<b>DOS</b>";
> }
> }
>
> #idealmente, se verifica el tipo del archivo, y en caso de ser texto se
> # reformatea colocando los codigos adecuados. En este caso solo lo
> guardamos
> # es decir, suponemos archivo binario.
>
> #obtener el nombre, sin extención.
> if($archivo=~m/([\w\d]+)\.(\w+)/i)
> {
> #tomar nomrbe y extención del archivo original, pero en minusculas
> $nombre=lc($1);
> $nombrefe=lc($2);
> }
> else
> {
> #archivo enviado no reconocido como imagen
> error(1);
> }
>
> #Escribir el archivo recibido
> #print "Archivo binario recibido<p>\n";
> open(AS,">$media/$nombre.$nombrefe");
>
> $cb=0;
> while(read($archivo,$chrs,1024))
> {
> #escribe bloques de 1024 caracteres a la salida hasta que haya error
> print AS $chrs;
> $cb++; #contador de bloques
> }
> close AS;
> if($cb==0)
> {
> #El archivo estaba vacio o no se recive por otro motivo.
> if(-z "$pathf")
> {
> print "rm $pathf<br>\n";
> system("rm $pathf");
> }
> error(6);
> }
>
> #Datos de la forma
> open(AD,">>$registros");
> print AD "\"".$def->param('campo1')."\","\""
> .$def->param('campo2')."\","\""
> .$def->param('campo3')."\","\""
> .$def->param('campo4')."\",$nombre.$nombrefe\n";
>
> #notese que el nombre del archivo no esta entre comillas y que no
> incluye la
> # ruta, ya que se considera como conocida al poner todas las imágenes en
> el
> # mismo directorio.
>
> #Enviar la terminacion de la forma de respuesta
> open(AE,"$textos/$htmlpfin");
> while(<AE>)
> {
> print;
> }
> close AE;
>
> exit(0);
>
> #Inicio de subrutinas
> sub error
> {
> #rutina que imprime los mensajes de error adecuados.
> @errores=("La extensión del archivo enviado no corresponde con
> un tipo valido de gráfica",
> "El nombre del archivo de texto es inválido, solo caracteres
> alfanuméricos por favor",
> "El archivo enviado como de texto contiene caracteres
> inválidos",
> "Proporcione todos los datos para la ficha de resumen",
> "Error de base de datos",
> "El archivo enviado no tiene información"
> );
> #Se indica el error
> my($errno)=shift @_;
> $errno--;
> print "<B>ERROR</B><br>$errores[$errno]<p>";
> print "<u>Por favor regrese a la forma anterior y vuelva a
> intentar</u><p>";
> # se termina la forma HTML
> print "$comando<br>\n"; #por si el error 5
> open(AE,"$textos/$htmlpfin");
> while(<AE>)
> {
> print;
> }
> close AE;
> exit(0);
> }
> -------------fin de programa------------
>
> Archivos con el HTML que el CGI responde
>
> ------------inircv.htmlp------------
> <HEAD><TITLE>Recepción de archivos</TITLE></HEAD>
> <BODY BACKGROUND="/pumasi/media/WHITE5.GIF">
> <TABLE WIDTH=87% ALIGN=RIGHT>
> <TR>
> <TD WIDTH=3% BGCOLOR="#E0B010"><FONT COLOR="#E0B010">1</FONT></TD>
> <TD WIDTH=1% BGCOLOR="#E0B010"><FONT COLOR="#E0B010">1</FONT></TD>
> <TD><FONT FACE="VERDANA"><FONT COLOR="#E0B010">
> <H2>Proceso de recepción de archivos</H2></FONT>
> En la recepción de su archivo enviado mediante HTTP:<p>
> ------------------------------------
> ------------finrcv.htmlp------------
> <hr>
> Sistema PUMASI, generado por
> <A HREF="http://132.248.71.81/cgi-bin/lacertus/hola">
> Daniel Sol Llaven 1997</A>
> </TABLE>
> </BODY>
> ------------------------------------
> --
> Bolo Lacertus: lacertus@servidor.dgsca.unam.mx ==~\___\
> http://proteo.dgsca.unam.mx/cgi-bin/lacertus/hola =__vvvv
> --------- Pie de mensaje --------------------------------
> Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
> Cancelar inscripcion:
> mail to: majordomo@tlali.iztacala.unam.mx
> text : unsubscribe perl
--
*****************************************************************
CARLA LORENA LARIOS
Ministerio Publico, Gobierno de Guatemala
Departamento de Informatica, Unidad de Telematica
http://www.mp.lex.gob.gt http://www.lex.gob.gt
8a. Av. 10-67, Zona 1, 01001, PBX:(502) 2324651 al 54, ext. 216-217
ICQ# 17935585
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text : unsubscribe perl