2017-03-13 6 views
-3

Ich versuche, einen Wert von einer Anmeldeseite an eine andere Seite zu übergeben.Kann Variable nicht halten

Von der Login-Seite gelangt die erfolgreiche Anmeldung den „username“ zurück zur Startseite:

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

Die Haupt-Seite erhält die Variable wie folgt:

my $y = param ("x"); 

und druckt es mit diese Aussage:

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

Wenn ich zuerst umgeleitet werde, wird $ y mit nein gedruckt Probleme. Jedoch, wenn ich ein Formular in der Haupt-Seite ausführen:

<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> 

es kann nicht den Wert von $ y halten und druckt die „else“ Anweisung egal, was ich tue. Bitte helfen Sie!

+2

Sie müssten den Benutzernamen auch als Parameter senden, wenn Sie das Formular absenden, z. indem man es in ein verstecktes Formularfeld legt. Aber Session-Management ist ein großer Schmerz in CGI.pm; Sie sollten ein Framework mit integrierter Sitzungsverwaltung verwenden, wie [Dancer2] (https://metacpan.org/pod/Dancer2), [Mojolicious] (https://metacpan.org/pod/Mojolicious), [Catalyst]. (https://metacpan.org/pod/Catalyst) oder sogar [CGI :: Application] (https://metacpan.org/pod/CGI::Application). – ThisSuitIsBlackNot

+0

Wie lautet der Aktionswert im Formular-Tag? – adrianp

+1

Das Formular hat keine Eingabe mit dem Namen 'x', also wird '$ y' natürlich nie gesetzt. – ikegami

Antwort

1

Sie haben uns Ihr Formular nicht angezeigt, aber ich nehme an, dass Ihr Formular die Standardaktion (d. H. Die Seiten-URL) ohne Abfrageparameter verwendet.

+0

Auch wenn es so ist, brauchen Sie 'urlparam' anstelle von' param'. – ikegami