[Fwd: Re: [perl] Ayuda sobre system]
Bolo Lacertus
lacertus@servidor.unam.mx
Mon, 12 Apr 1999 14:18:38 -0500
Saludos!!!
Mis correos insisten en no llegar directamente, así que me tomo la
libertad de contestar a la lista. Claudia, por favor indicame otra
dirección de tu servidor, de modo que pueda enviarte los correos
directamente, ya que mi DNS no resuelve adecuadamente senamed.edu.co.
Apenado pues ya estaba hechando todo al olvido: Daniel Sol
-------- Original Message --------
Subject: Re: [perl] Ayuda sobre system
Date: Thu, 18 Mar 1999 12:20:03 -0600
From: Bolo Lacertus <lacertus@servidor.unam.mx>
Organization: Coordinacion de Prospeccion Tecnológica UNAM
To: Claudia Arenas <carenas@senamed.edu.co>
References:
<c=US%a=_%p=SENA%l=SANTMED04M-990217130534Z-10814@santmed04m.senamed.edu.co>
Saludos!!!
Mis discupas por mi correo electrónico, quein sabe que andan haciendo
los administradores que luego suceden cosas raras.
Ok, entonces todo es alternativa si tienes datos o no, ya veo, de hecho
debí darme cuenta antes, bueno, al mejor mono se le va el zapote (dicho
chiapaneco).
Claudia Arenas wrote:
> #!f:\proyisis\perl
> require "cgi-lib.pl";
> &ReadParse(*input);
> $n = $input{'entrada'};
> $c1='wwwi32 '; (la herramienta wwwisis)
> $c2='"bool='.$n.'"'; (variable entrada)
> $c4=' pft=@fbprueba.pft '; (formato con datos)
> $c7=' pft=@sindatos.pft '; (formato sin datos)
> $c5='db=norte\norte '; (base de datos)
> $regresar = "<a
> href=http://www.senamed.edu.co/biblioteca/bdnorte.htm>Regresar al
> formulario de Búsqueda";
> print "$regresar";
> print "<hr>";
Ok, entonces $n tiene el parámtetro y sobre él aplicaremos las
condiciones, lo empleas en la variable $c2, pero no modificas su
valor...
Antes que nada un comentario, hay un hueco de seguridad en el modo en
que lo usas, ya que podrían entregarse cadenas de caracteres
"traviesas", inaginate por ejemplo que en el parámetro escriba:
; rm ./*;echo "lero lero"
Podría ser desastroso para tu sistema.
Para evitar esto, te recomiendo que "limpies" tu cadena con algo del
estilo de:
$n=~s/;|\'//g; #limpieza mínima
$n=~s/\W|\D//g; #solo deja caracteres alfanumericos, nisiquiera respeta
espacios
En fin, si ninguna de estas se ajusta a tus necesidades, elabora una a
la medida, pero trata de limpiar tu cadena para evitar problemas con
usuarios traviesos o atrabancados.
Ok, condiciones sugeridas:
if($n eq "") #en caso de que el parámetro no sea nulo.
if($n!~/patron/) #si $n no se ajsuta a una expresion regular "patron"
por ejemplo, si esperas que en $n venga una palabra podrías usar:
if($n!~/^\w$/) #Admite solo si $n es una sola palabra de caracteres
alfabéticos.
> if (tal cosa???) { (control que deseo
> system("$c1$c5$c2$c7$"); realizar para poder
> } invocar los dos
> else { que me deben salir
> system("$c1$c5$c2$c4$"); si hay datos o no)
> }
> exit;
Con alguna de estas alternativas debe hacer mas o menos lo que deseas,
las expresiones regulares se pueden hacer mucho mas a la medida de los
datos que esperas, por ejemplo, para confirmar que tu opción viene
dentro de las alternativas válidas o para verificar que sea un
número,palabra o enunciado válido.
Esperando que a pesar de la tardanza sea de alguna utilidad: Daniel Sol
--
Bolo Lacertus: lacertus@servidor.dgsca.unam.mx ==~\___\
http://132.248.71.81/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 : cancelacion perl