CGI - Fallo en CGI

 
Vista:

Fallo en CGI

Publicado por Alextroy (1 intervención) el 11/04/2005 10:02:16
Fallo en CGI
Hola, tengo el siguiente script creado:
#!/usr/bin/perl -w
use strict;
use CGI;
my $cgi = new CGI;
my %input_data = $cgi->Vars;

$nombre=$input_data{\'usuario\'};

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

El caso es que me da un error cuando intento ejecurarlo. He mirado en el log de errores y me dice que el error es debido a un final prematuro en las cabeceras del script, aunque no se a que se refiere.
Lo mas extraño es que si suprimo la linea $nombre=$input_data{\'usuario\'}; el script funciona mostrandome la pantallita de Hola Mundo.
EL formulario que llama a este script esta perfectamente configurado, lo he comprobado mil veces. ¿alguien sabe a que puede deberse esto??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Error en el script Perl

Publicado por Alejandro (140 intervenciones) el 24/08/2023 19:45:41
El error que estás experimentando parece estar relacionado con la forma en que estás accediendo a los valores enviados por el formulario utilizando el módulo CGI de Perl. Aquí hay una corrección al script para que funcione correctamente:

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl -w
use strict;
use CGI;
 
my $cgi = new CGI;
my %input_data = $cgi->Vars;
 
my $nombre = $input_data{'usuario'};  # Sin la barra invertida y comillas simples
 
print "Content-type: text/html\n\n";  # Usar comillas dobles para imprimir la cabecera
print "Hola $nombre";  # Mostrar el nombre que se recibió del formulario
exit;

Los cambios que he realizado en el script son los siguientes:

1. Corrección de acceso a datos del formulario:
En lugar de `$nombre=$input_data{\'usuario\'}`, debe ser `$nombre = $input_data{'usuario'}`. Quité la barra invertida y las comillas simples en el acceso al valor enviado por el formulario.

2. Impresión de la cabecera:
Utilicé comillas dobles en la línea `print "Content-type: text/html\n\n";` para asegurarme de que la cabecera se imprima correctamente.

3. Salida de datos:
Utilicé la variable `$nombre` para mostrar el nombre recibido del formulario en el mensaje de "Hola". Esto imprimirá "Hola [nombre]" en lugar de simplemente "Hola mundo".

Asegúrate de que estos cambios solucionen el problema que estás experimentando. Si el error persiste o recibes un mensaje de error diferente, asegúrate de revisar otros posibles problemas, como la configuración del servidor web y la ubicación del script en el servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar