• Publicidad

Mozilla y yo no nos llevamos bien, error con arroba

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Mozilla y yo no nos llevamos bien, error con arroba

Notapor mydaboin » 2009-02-06 10:52 @494

Bueno les cuento que tengo un error con Mozilla y el arroba, primero tenía problemas con los acentos pero creo que lo solucioné con una línea pero lo del correo me creo un conflicto muy feo, este es el script de la planilla.

El encabezado del script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

##########################################################################
#                 Enviar Invitación Confex
#                 v.1.0 (c) 2005  Mayra Ramírez            
#-------------------------------------------------------------------------
#             Interprete Perl 5.0 o superior, en sistemas Unix.          
##########################################################################
print "Content-type: text/html\nPragma: no cache\n\n";
print "<html><head><title>Enviar Invitación</title>\n";
print qq~
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
~;
print "<style TYPE=\"text/css\">\n";
print "<!--\n";
print "a \{ text-decoration: none; color:#8B1C62; font-size:18px \}\n";
print "a:hover\{ text-decoration: underline; color:red; font-size:20px \}\n";
print "b \{ font-size:12px; color:#ff0099; font-family: Arial;\}\n";
print "td \{ font-size:12px; color:navy; font-family: Arial;\}\n";
print "strong \{ font-size:16px; color:#8B3A62; font-family: Arial;\}\n";
print "body \{ font-size:12px; color:navy; font-family: Arial\; }\n";
print "// -->\n";
print "</style></head>\n";
print "<body bgcolor=White topmargin=5><center>\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Aquí la parte donde le digo al script que reconozca el arroba

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
##########################################################################
# Entrada de datos
##########################################################################
&Parametros(&Entrada);
        $email=~s/\:/@/g;
        $email=~s/\// /g;
        #$email=~s/\-//g;
        $year="";
        $destino=~s/\:/@/g;
        $destino=~s/\// /g;
        $destino=~s/\-//g;
        $fecha=&Fecha;
        $edad=$year-$year_nac;
        #$cargo=ucfirst(lc($cargo));
        $cedula=~s/\E//g;
        $cedula=~s/\e//g;
        $cedula=~s/\V//g;
        $cedula=~s/\v//g;
        $cedula=~s/\.//g;
        $cedula=~s/\-//g;
        $cedula=~s/\ //g;
        $tlf=~s/\// /g;
        $tlf=~s/\-/ /g;
        $tlf=~s/\./ /g;
if ($pais eq ""){
        $pais="Venezuela";
}
##########################################################################
# Procedimientos
##########################################################################
&Revisar if $accion eq "revisar";
&Confirmar if $accion eq "Aceptar y enviar los datos";
&Captura;
print "</body></html>\n";
exit 0;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Luego se crea la planilla y el error está contenido en la revisión, en donde me muestra en el email lo siguiente, el cual originalmente es [email protected]:

Imagen

El link de la planilla original es este, el explorer no ocurre ese error T_T

http://www.salondelempaque.com/cgi-bin/ ... itacion.pl
MYRD
mydaboin
Perlero nuevo
Perlero nuevo
 
Mensajes: 66
Registrado: 2004-04-22 08:07 @380
Ubicación: Pues Aqui, Preguntando

Publicidad

Notapor explorer » 2009-02-06 11:46 @531

Yo no veo ninguna conversión de la arroba por ningún sitio.

Creo que el problema estará en que Mozilla transmitirá la arroba en una codificación distinta que la del Explorer.

Falta ver el código que muestra $email. Teniendo en cuenta que la arroba es el sigil de los arreglos, cabe la posibilidad de que lo estés interpretando antes de sacarlo fuera, por lo que Perl intentará presentar un arreglo y no un literal (use strict te hubiera avisado). Es muy posible que Firefox transmita una verdadera arroba, mientras que Explorer transmita un carácter codificado (como por ejemplo %40).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor mydaboin » 2009-02-10 09:08 @422

Bueno, aqui tenemos el área de revisión, en donde te especifico donde se encuentra el email y donde se me produce el error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#==========================================================================
# funcion Revisar
#==========================================================================
sub Revisar{
#if ($cat eq ""){$campos="$campos <br> Categoria";}
if ($empresa1 eq ""){$campos="$campos <br> Nombre de la Empresa";}
if ($cedula eq ""){$campos="$campos <br> Cédula";}
if ($apellidos eq ""){$campos="$campos <br> Apellidos";}
if ($tlf eq ""){$campos="$tlf <br> Telefonos";}
if ($fax eq ""){$campos="$campos <br> Fax";}
if ($email eq ""){$campos="$campos <br> Email";}
#if ($cargo eq ""){$campos="$campos <br> Cargo solicitado";}
if ($zona eq ""){$campos="$zona <br> Direccion";}
if ($campos ne ""){&Mensaje("<b>Faltan los siguientes datos:</b> $campos","si")}
                        print "<table cellpadding=5 cellspacing=5 width=100% bgcolor=white border=1>\n";
                        print "<tr><td align=center><b><font color=red size=4>Verifica tus datos</font></b>\n";
                        print "</td></tr></table>\n";
                        print "<table border=1 cellpadding=5 cellspacing=0 bgcolor=white width=100% bordercolor=blue bordercolorlight=white bordercolordark=white>\n";
                        print "<tr><td>\n";
                        print "<big>Datos Personales</big><br>";
                        print "<b>Nombres: </b>: $nombres<br>";
                        print "<b>Apellidos: </b>: $apellidos<br>";
                        print "<b>C.I </b>: $cedula<br>";
                        print "<b>Profesión </b>: $profesion<br>";
                        print "<tr><td>\n";
                print "<big>Dirección</big><br>";
                        print "<b>Zona / Urb.</b>: $zona<br>";
                        print "<b>Calle / Av</b>: $calle<br>";
                        print "<b>Edificio / C.C.:</b>: $edificio<br>";
                        print "<b>Piso:</b>: $piso  ";
                        print "<b>Oficina:</b>: $oficina<br>";
                        print "<b>Postal</b>: $postal";
                        print "<b>Ciudad</b>: $ciudad<br>";
                        print "<b>País</b>: $pais<br>";
                        print "<b>Teléfonos</b>: $tlf<br>";
                        print "<b>Fax</b>: $fax<br>";
                        print "<b>Celular</b>: $celular<br>";
                        print "<b>E-mail</b>: $email<br>";
                        print "<b>Web Site</b>: $web<br>";
                        print "<tr><td>\n";
                        print "</td></tr>\n";
                        print "</table>\n";
       
                print "<table cellpadding=5 cellspacing=5 width=100% border=1 bgcolor=red>\n";
                print "<tr><td><p align=justify>\n";
                print "<b><font color=white>\n";
                print "Este es el Aspecto que tendrá su Solicitud de Invitación si desea puede Modificarlo hasta que tenga el aspecto deseado.";
                print "</font></b>\n";
                print "</p></td></tr></table>\n";
        print "<FORM ACTION=\"$ENV{'SCRIPT_NAME'}\" method=POST\>\n";
        print "<input type=hidden name=nombres value=\"$nombres\">\n";
        print "<input type=hidden name=apellidos value=\"$apellidos\">\n";
        #print "<input type=hidden name=cargo value=\"$cargo\">\n";
        print "<input type=hidden name=cedula value=\"$cedula\">\n";
        print "<input type=hidden name=profesion value=\"$profesion\">\n";
        print "<input type=hidden name=empresa1 value=\"$empresa1\">\n";
        print "<input type=hidden name=cargo value=\"$cargo\">\n";
        print "<input type=hidden name=zona value=\"$zona\">\n";
        print "<input type=hidden name=calle value=\"$calle\">\n";
        print "<input type=hidden name=edificio value=\"$edificio\">\n";
        print "<input type=hidden name=piso value=\"$piso\">\n";
        print "<input type=hidden name=oficina value=\"$oficina\">\n";
        print "<input type=hidden name=postal value=\"$postal\">\n";
        print "<input type=hidden name=ciudad value=\"$ciudad\">\n";
        print "<input type=hidden name=pais value=\"$pais\">\n";
        print "<input type=hidden name=tlf value=\"$tlf\">\n";
        print "<input type=hidden name=fax value=\"$fax\">\n";
        print "<input type=hidden name=celular value=\"$celular\">\n";
        print "<input type=hidden name=email value=\"$email\">\n";
        print "<input type=hidden name=web value=\"$web\">\n";
        print "<input type=submit name=accion value=\"Regresar a Modificar\">\n";
                print "<hr>\n";
        print "<input type=submit name=accion value=\"Aceptar y enviar los datos\">\n";
                print "<hr>\n";
        print "</form>";
                exit 0;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


y el área de parámetros de entrada:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#==========================================================================
# funcion Entrada de datos externos
#==========================================================================
sub Entrada{
        local ($entrada);
        if ($ENV{'REQUEST_METHOD'} eq "POST"){
                read(STDIN, $entrada, $ENV{'CONTENT_LENGTH'});
        }elsif ($ENV{'REQUEST_METHOD'} eq "GET"){
                $entrada = $ENV{'QUERY_STRING'};
        }else{
                $entrada = join("&", @ARGV);
        }
        $entrada=~s/\+/ /g;
        $entrada=~s/\@/:/g;
        $entrada=~s/\%2C/,/g;
        $entrada=~s/\%E1/á/g;
        $entrada=~s/\%E9/é/g;
        $entrada=~s/\%ED/í/g;
        $entrada=~s/\%F3/ó/g;
        $entrada=~s/\%FA/ú/g;
        $entrada=~s/\%2F/\//g;
        $entrada=~s/\%28/\(/g;
        $entrada=~s/\%29/\)/g;
        $entrada=~s/\%0D%0A/ /g;
        $entrada=~s/\n/ /g;
        return $entrada;
}
#==========================================================================
# funcion Parametros
#==========================================================================
sub Parametros{
        local ($linea) = @_;
        local ($clave1, $valor);
        $linea =~ s/%(..)/pack("C",hex($1))/ge;
        $linea =~ s/\+/ /g;
        foreach (split(/\&/, $linea)){
                ($clave1, $valor) = split (/=/, $_);
                eval "\$$clave1 \= \"$valor\"";
        }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
MYRD
mydaboin
Perlero nuevo
Perlero nuevo
 
Mensajes: 66
Registrado: 2004-04-22 08:07 @380
Ubicación: Pues Aqui, Preguntando

Notapor explorer » 2009-02-10 12:39 @569

A bote pronto, y sin mirar mucho, creo que el problema está en las dobles comillas que hay alrededor de $valor en el último eval().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2009-02-10 16:00 @708

Realmente deberías de usar el CGI.pm ;)
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2009-02-10 18:24 @808

kidd escribiste:Realmente deberías de usar el CGI.pm ;)

¿A que sí?

Con CGI se pueden reducir muchísimo este tipo de programas... Ver la lista interminable de print() en batería... desanima a cualquiera que quiera modificarlas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor mydaboin » 2009-02-11 10:17 @470

Bueno, en resumidas cuentas, estos scripts son originarios del 2000 más o menos, solo que se han modificado según las necesidades, en este caso, ensamblé según lo que ya conocía del programa que eran estos scripts, y pues utilizo obviamente los print() por todos lados, jaja, es lo primero que estudié, y me quedé con esa forma de plasmarlo, si hay otra forma que sé que hay, pues no la usado por falta de tiempo, pero en estos días que este más desocupada (aunque lo dudo), pues trataré de usar el concejo de Kidd, aunque no sé exactamente cómo jajaja :)

En lo que se refiere al problema, pues me generó un error al quitarle las comillas, jajaja, así que no funciona, opté por una solución realmente fastidiosa, pero a su vez efectiva, ya que las pruebas han dado buenos resultados, gracias por estar tan al pendiente de los que nos adentramos en Perl y tenemos esperanzas en él, por más que me dicen de otras formas de hacer páginas, otras herramientas a nivel de programación, me quedo con él ;)
MYRD
mydaboin
Perlero nuevo
Perlero nuevo
 
Mensajes: 66
Registrado: 2004-04-22 08:07 @380
Ubicación: Pues Aqui, Preguntando

Notapor explorer » 2009-02-11 11:15 @510

Mira, con CGI,
* la función Parametros() sobra
* la función Entrada() sobra
* todos los print() que sacan información en formato HTML se pueden simplificar. Un minúsculo ejemplo lo tienes en mi CGI mínimo
* no tendrías que hacer el eval(), ya que dispondrías de todos los parámetros en la forma param('valor') o $parametros->{valor} o $Q::valor.

Y en cuanto a formas de hacer páginas web, en Perl tienes DOCENAS. Lo difícil es elegir con cuál.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados