2009-06-15 5 views
6

Comment puis-je lire le paramètre URL dans un programme CGI Perl?Comment puis-je lire le paramètre URL dans un programme CGI Perl?

+5

Stackoverflow est un goto pour beaucoup, et les points "je me sens chanceux" de Google ici pour plusieurs recherches. Donc, ces commentaires ci-dessus sont inutiles et demandent à stackexchange d'ajouter des commentaires négatifs. – ctpenrose

+1

entendre entendre. d'autant plus que, comme ma réponse le montre, il peut y avoir une bonne quantité de détails pour une réponse correcte, et une recherche sur google ne va pas nécessairement tout révéler. – ysth

Répondre

12

Pour demandes GET, CGI analyse les paramètres spécifiés et les rend disponibles via la méthode param().

Pour requêtes POST, param() renverra les paramètres de la postdata, mais tous les paramètres spécifiés par une chaîne de requête dans l'URL elle-même sont encore disponibles à partir de la méthode url_param(). (Cela peut être utile lorsqu'une requête POST est supérieure à $CGI::POST_MAX, dans ce cas, CGI ignore les postdata, mais vous pouvez obtenir des paramètres de chaîne de requête qui identifient le type de requête pour fournir un bon message d'erreur.)

Pour le style des demandes de ISINDEX, les mots-clés demandés sont disponibles via la méthode keywords(), ainsi que par l'intermédiaire param() dans un paramètre faux « mots-clés ».

Mise à jour: Si vous vouliez autre chose que les paramètres par "Paramètre URL", la méthode url() fournit tout ou partie de l'URL demandée; voir OBTAINING THE SCRIPT'S URL.

3

Il est recommandé d'utiliser un analyseur d'URL tel que mentionné par ysth, mais si vous voulez vraiment l'entrée brute, il est disponible par les moyens suivants:

pour GET:

$contents = $ENV{'QUERY_STRING'}; 

POST:

$contents = <STDIN>; 
3

Essayez code ainsi:

my @names = $query->param; 
foreach $name (@names) { 
    if ( $name =~ /\_/) { 
     next; 
    } else { 
     print "<p> ".$name."\t=\t".$query->param($name) . "</p>\n"; 
    } 
} 
Questions connexes