2017-03-13 2 views
-3

J'essaie de transmettre une valeur d'une page de connexion à une autre page.Impossible de contenir la variable

A partir de la page de connexion, la connexion réussie passe le "nom d'utilisateur" Retour à la page principale:

print redirect("http://example.com/cgi-bin/asg2/Assignment2.plx?x=$login"); 

La page principale reçoit la variable comme suit:

my $y = param ("x"); 

et imprime à l'aide cette déclaration:

if ($y){ 
print "$y";} else {print "Please log in";} 

Lorsque je suis redirigé pour la première fois, $ y est imprimé sans problèmes. Cependant, lorsque je forme l'exécution d'une page principale:

<form method="POST" action="http://examplecom/cgi-bin/asg2/Assignment2.plx"> 

     <div id="choices"> 

      <h2>Make a Choice</h2> 

      <input class="css-checkbox" id="Kadinski1" name="Painting" type="radio" value="Autumn in Bavaria -Wassily Kandinsky" /><span id="Kad1">Autumn in Bavaria</span><br /> 
      <input id="Kadinski2" name="Painting" type="radio" value="Movement I - Wassily Kadinsky" /><span id="Kad2">Movement I</span><br /> 
      <input id="Tamara1" name="Painting" type="radio" value="Autoportrait - Tamara De Lempicka" /><span id="Tam1">Autoportrait</span><br /> 
      <input id="Tamara2" name="Painting" type="radio" value="Group of Four Nudes - Tamara De Lempicka" /><span id="Tam2">Group of Four Nudes</span><br /> 
      <input id="Frida1" name="Painting" type="radio" value="Moses - Frida Kahlo" /><span id="Fri1">Moses</span><br /> 
      <input id="Frida2" name="Painting" type="radio" value="What the Water Gave Me - Frida Kahlo" /><span id="Fri2">What the Water Gave Me</span><br /> 
      <input id="Vincent1" name="Painting" type="radio" value="Skull of a Skeleton with a Burning Cigarette - Vincent van Gogh" /><span id="Vin1">Skull of a Skeleton with a Burning Cigarette</span><br /> 
      <input id="Vincent2" name="Painting" type="radio" value="Cafe Terrace on the Place du Forum - Vincent van Gogh" /><span id="Vin2">Cafe Terrace on the Place du Forum</span><br /> 
      <input id="Salvador1" name="Painting" type="radio" value="Swans Reflecting Elephants - Salvador Dali" /><span id="Sal1">Swans Reflecting Elephants</span><br /> 
      <input id="Salvador2" name="Painting" type="radio" value="The Persistence of Memory - Salvador Dali" /><span id="Sal2">The Persistence of Memory</span><br />    
      <br />    
      <input type="submit" value="Submit"> 
      <br /> 
      <br /> 
     </div> 

</form> 

il ne peut pas tenir la valeur de y $ et il imprime la mention « autre », peu importe ce que je fais. S'il vous plaît aider!

+2

Vous devez également envoyer le nom d'utilisateur en tant que paramètre lorsque vous envoyez le formulaire, par ex. en le mettant dans un champ de forme caché. Mais la gestion de session est une énorme douleur dans CGI.pm; vous devriez utiliser un framework avec gestion de session intégrée, comme [Dancer2] (https://metacpan.org/pod/Dancer2), [Mojolicious] (https://metacpan.org/pod/Mojolicious), [Catalyst] (https://metacpan.org/pod/Catalyst), ou même [CGI :: Application] (https://metacpan.org/pod/CGI::Application). – ThisSuitIsBlackNot

+0

Quelle est la valeur de l'action dans l'étiquette de formulaire? – adrianp

+1

Le formulaire n'a pas d'entrée nommée 'x', donc bien sûr' $ y' n'est jamais défini. – ikegami

Répondre

1

Vous ne nous avez pas montré votre formulaire, mais je devine votre formulaire utilise l'action par défaut (à savoir l'URL de la page) sans aucun paramètre de requête.

+0

Même si c'est le cas, vous avez besoin de 'urlparam' au lieu de' param'. – ikegami