Página 1 de 1

Problema con Post

NotaPublicado: 2006-08-26 13:05 @587
por danimera
Resulta que envio datos por GET y me funciona bien, pero cuando uso el method POST me sale error que las variables no me llegan o me pasan vacía,

También uso el módulo CGI, pero mi problema es que, hay un formulario que usa Post y funciona bien, pero los otros formularios no.

ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
  1. <form name="fomulario" action="recipiente.pl" method="get"> Funciona 
  2. <form name="fomulario" action="recipiente.pl" method="POST"> NO 


Instalë de nuevo el Windows y nada sigue igual. ¿Será que hay algo especial que no he hecho?

NotaPublicado: 2006-08-26 13:23 @599
por explorer
Está descrito en el manual de CGI.pm:
HANDLING NON-URLENCODED ARGUMENTS

If POSTed data is not of type application/x-www-form-urlencoded or multipart/form-data, then the POSTed data will not be processed, but instead be returned as-is in a parameter named POSTDATA. To retrieve it, use code like this:

my $data = $query->param('POSTDATA');
que quiere decir que en tu <form> debes agregar el tipo de codificación por el que se van a enviar los datos. Algo así:
Código: Seleccionar todo
<form name="fomulario" action="recipiente.pl" method="POST" enctype="application/x-www-form-urlencoded">
(también en el manual de CGI.pm).

O de lo contrario, recibirás la entrada del formulario en un único parámetro llamado POSTDATA, que es lo que te está pasando ahora.

NotaPublicado: 2006-08-26 16:50 @743
por danimera
Yo sabia que era eso, lo sabia, lo sabia que era el encode type algo me lo decia,,

Gracias Explorer, cada dia se aprende mas

NotaPublicado: 2006-09-23 22:35 @982
por AkonD
Tengo un problema parecido, si me pueden echar una mano

Sintáxis: [ Descargar ] [ Ocultar ]
  1. <form name='crear-perfil' method='POST' action="?cmd=crear_perfil" enctype='application/x-www-form-urlencoded'><fieldset> 


El problema que tengo es que no consigo recibir los datos del formulario. Para recojer los datos utilizo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %form = $cgi->Vars;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Si os fijais en el action del form envío un parámetro a la url junto con el formulario. Para recojerlo uso
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $cmd = url_param('cmd');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Salu2

NotaPublicado: 2006-09-24 08:57 @415
por explorer
Prueba a colocar ese parámetro como un elemento invisible del formulario, un
Sintáxis: [ Descargar ] [ Ocultar ]
  1. <input type="hidden" name="cmd" value="crear_perfil"> 

NotaPublicado: 2006-09-24 09:15 @427
por AkonD
He probado con el input hidden y nada.. incluso peor porque no carga la página de respuesta del formulario.

Voy a pegar el código del script. Os dejo la url
http://rafb.net/paste/results/ORcwzq83.html

Una duda.

Lo que recibo del formulario se junta con lo que recibo en la url, ¿no?

Me refiero a que con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
%hash = $cgi->Vars
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
recibiré el formulario y lo del cmd o al usar $cgi->url_param coje lo de cmd por un lado y el formulario por Vars... no sé si me explico.

NotaPublicado: 2006-09-26 11:20 @514
por explorer
Pueden mezclarse tanto lo recibido por POST como lo indicado como parámetro en el URL. El módulo CGI se encarga de eso. PERO: en la función param() sólo devolverá lo enviado por POST. Para recuperar los parámetros que están en el URL debes usar la función url_param().

Lee el manual del CGI, buscando por 'mixing post and url'.