• Publicidad

Ayuda script CGI

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Ayuda script CGI

Notapor rklz » 2007-05-28 17:26 @768

Buenas perleros , soy nuevo en el foro y les mando un saludo a todos y espero que me reciban bien :$
Les comento mi problema:
Tengo un pequeño script de Perl con CGI para usar desde el navegador; tiene permisos 775; creo que no tiene ningún error (ustedes dirán). El tema es que a veces funciona y otras veces el navegador me lo quiere bajar como texto plano; no tengo idea porqué. Apache2 no tira errores en el log. Les pego el script:
¡Muchas gracias por el tiempo de leer mi post de novato y un primer gran saludo para todos!

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

print "Content-type: text/html\n\n";
print "Tu direccion IP es: ";
print $ENV{'REMOTE_ADDR'};
print " \n\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Publicidad

Notapor explorer » 2007-05-28 17:42 @779

Bienvenido a los foros de Perl en Español.

Yo el script le veo bien, a pesar de que cargas el módulo CGI y luego no haces ningún uso de él.

Si es el servidor web el que se comporta de forma extraña, quizás sea él el causante. De todas formas... fíjate que estás diciendo en el script que vas a devolver una página html (Content-type: text/html), pero en realidad no lo haces, si no que devuelves un texto.

Prueba a cambiar el Content-type por un Content-type: text/plain. O devuelve efectivamente una página html.

También puedes probar mi CGI mínimo para comprobar si funciona el módulo CGI.
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 rklz » 2007-05-28 17:48 @783

Explorer : muchísimas gracias por contestar tan rápido, parece mensajería instantánea.
Probé poniendo text/plain y funcionó excepto cuando lo abro desde konqueror (uso Debian) , si lo abro desde la PC con Windows e Internet Explorer o desde Debian con Opera funciona lo más bien, ¿el navegador tiene que ver? Ahora hay algo que te pregunto de novato: el módulo CGI yo lo cargo para poder poner después "content type text/html"; ¿puedo poner lo anterior sin usar el modulo CGI?

De nuevo gracias por contestar y mil disculpas por mis preguntas noob. Hace muy poco que arranque por Perl y todavía no terminé de leer Professional perl programming, pero ya amo Perl : P

Un saludo y gracias por contestar.
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Notapor explorer » 2007-05-28 18:52 @828

Sí que podría ser causa del navegador... pero lo normal es que el Content-type coincida con lo que realmente le pasamos. Puede que tu no veas nada en el konqueror porque realmente el navegador está intentando representar HTML, pero al no existir marcas, no sale nada. Cuando cargues la página con el konqueror, mira el código fuente de lo que estás viendo, a ver si el konqueror ha recibido al menos algo.

El módulo CGI no tiene nada que ver con los print. De hecho, podrías reescribir tu CGI a esto:

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

print "Content-type: text/html\n\n";

print "<html>\n";
print "<head>\n";
print "<title>Respuesta</title>\n";
print "</head>\n";
print "<body>\n";
print "Tu direccion IP es: ", $ENV{'REMOTE_ADDR'}, "\n";
print "</body>\n";
print "</html>\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
pero claro... hay que escribir mucho para una página tan pequeña. Uno de los usos del módulo CGI es el de ahorrar trabajo a la hora de generar código html. Tu nuevo código CGI queda:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use CGI ':standard';
use warnings;

print header;
print start_html("Respuesta");
print p("Tu direccion IP es " . $ENV{'REMOTE_ADDR'});
print end_html();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
que queda un poquito más claro. Pero CGI se usa para mucho más. Aquí no hay espacio ni tiempo para ver todo lo que puede hacer, así que te toca hacer un vistazo rápido por el manual. O mejor empezar por cosas sencillas de cgi. Recuerda que esta web tiene unos tutoriales sobre el tema. Y en el foro, un montón de hilos.
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 Web

¿Quién está conectado?

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