8797 sujets

Développement web côté serveur, CMS

Bonjour
j'ai un formulaire tout simple

<form action="http://127.0.0.1/cgi-bin/FormCgi.pl" method="get" enctype="text/plain">
<p>
	Name:<br />
	<input name="nom_utilisateur" size="40" /><br /><br />
	E-Mail:<br />
	<input name="courriel_utilisateur" size="40" /><br /><br />
	Text:<br />
	<textarea name="Texte" rows="5" cols="50"></textarea><br /><br />
	<input type="submit" value="envoyer les donn&eacute;es du formulaire" />
	</p>
</form>

Pour récupèrer les informations, j'ai écrit


if ($ENV{'REQUEST_METHOD'} eq "GET") {
	$request = $ENV{'QUERY_STRING'};

} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $request,$ENV{'CONTENT_LENGTH'});
}


Avec GET, pas de souci, je peux imprimer le contenu de $request mais pas avec POST.
De plus si j'ai

my @tab = split("&", $request);
print "taille ",$#tab;
foreach my $i (@tab){
    print $i."<br />";
}


l'indice du dernier élément du tableau est -1 si j'ai la méthode POST et correcte avec GET.
Où est l'erreur ?

Merci par avance
salut coucou,

apres mettre aperçu que perl n'etait même plus installé sur ma machine et avoir trimé pour le ré-installé

je m'aperçois que si ça se trouve le pb est purement html.

si dans ton formulaire j'echange get par post j'obtiens ça

taille 0
nom_utilisateur=gfgfg courriel_utilisateur=fgf Texte=dsdkh


Bilan une taille bizarrement nulle mais des données du formulaire bien retrouvée.
je ne m'explique pas le zero car mon perl est un peu rouillé mais l'essentiel me semble là.

si en plus j'echange post et get dans le script perl alors là oui j'obtiens un -1

mais cet echange n'a pas de sens ( si ce n'est qu'au premier abord ça avait un petit coté logique )

en effet

if ($ENV{'REQUEST_METHOD'} eq "POST") {
	$request = $ENV{'QUERY_STRING'};

ne peut qu'etre vide puisque les données post par definition ne sont pas dans la query_string.


bon a part ça je ne sais pas pourquoi tu obtiendrais -1. faudrait expliciter ce que tu as fait en mode post.

et sinon houuuu (cri du alsanaute devant un code a la norme laxiste Smiley cligne ) des <input dont tu ne precise pas le type='text' même si c'est le choix par defaut. moi ça me fait fremir.
Modifié par CPascal (12 Mar 2008 - 15:50)
a écrit :

et sinon houuuu des <input dont tu ne precise pas le type='text' même si c'est le choix par defaut. moi ça me fait fremir.


si si ils y sont les type="text" (je suis toujours en xhtml strict) mais en faisant copier-coller et en simplifiant j'en ai enlevé un peu trop ...
Ce qui me rassure c'est que tu obtiens bien -1 comme moi avec la méthode POST.
En ce qui me concerne, je pense avoir une version très récente de Perl
le -1 est normal si tu fais ça $request = $ENV{'QUERY_STRING'}; dans la partie POST.

car bien sur seule les données get sont sur l'adresse url le post ( ça depend de la config ) voyage probablement par cookie.

j'ai installé ActivePerl-5.10.0.1002-MSWin32-x86-283697.msi ( trimé etait un bien grand mot Smiley cligne )

je suppose que c'est aussi assez récent.