Hackerboy1993: Skript funktioniert nur einmal.

Hallo Zusammen,
mein Script (siehe unten) sollte beim aufruf mit "zufallszahl.php?anzahlfragen=10" mir 10 Seiten generieren bei denen auf jeder Seite eine andere Zahl zwischen 1 und 10 angezeigt wird.

Wenn ich also nun mein Skript mit anzahlfragen=10 starte, dann funktioniert das Prima.

Wenn ich das Skript nun ein 2. Mal mit z.b. anzahlfragen=34 starte, so gibt das Skript weiterhin alles so aus als hätte ich es mit 10 gestartet.
Erst nachdem ich mein PHP SESSION ID -COOKIE gelöscht habe kann ich das Skript wieder benutzen.

Woran liegt das?

Vielen Dank für eure Antworten.

PS: http://revodka.ch.vu/zufallszahl.php?anzahlfragen=10 <-- Dort wäre es gelagert.

Hier der Code:

<?php
session_start();

function zahlenfolge($todo,$number)

///FUNKTION ZAHLENFOLGE - ERSTELLT ZUFALLSZAHLEN
///zahlenfolge("start","10");  <-- Mischt die Reihenfolge von 10 Zahlen.
///zahlenfolge("ask","7");      <-- Fragt ab welche Zahl als 7tes angezeigt werden soll.
 {
 if($todo=="start")
  {
  unset($allezufallszahlen);
  unset($_SESSION["anzahlfragen"]);
  $allezufallszahlen = array();
  $count="1";
  while($count <= $number)
   {
      array_push($allezufallszahlen,$count);
   $count++;
   }
  shuffle($allezufallszahlen);
  $_SESSION["funcfragenummer"]=$allezufallszahlen;
  $_SESSION["anzahlfragen"]=$number;

}
 if($todo=="ask")
  {
  $re=$_SESSION["funcfragenummer"];
  $re1=$number-1;
  $numbertoreturn="$re[$re1]";
  $anzahlfragen = $_SESSION["anzahlfragen"];
  return $numbertoreturn;
  }
  unset($number);
 }

/// </php head> ;-)

if($fragenummer=="")
{
$fragenummer="1";
zahlenfolge("start","$anzahlfragen");
$currentfrage=zahlenfolge("ask","1");
$nextfrage=2;
}
else
{
$currentfrage=zahlenfolge("ask","$fragenummer");

$nextfrage=$fragenummer+1;

}

echo <<<END

<html>
<head><title>Frage $fragenummer</title></head>
<body>
<h2>Frage $fragenummer: $currentfrage</h2>
Frage Nummer: $fragenummer<br>
Diese Frage: $currentfrage<br>
END;
if($nextfrage>$anzahlfragen)
{
echo "Fertig";
}
else
{
echo <<<END
N&auml;chste Frage: <a href="zufallszahl.php?fragenummer=$nextfrage"> Frage Nummer $nextfrage</a><br>
END;
}
echo <<<END

</body>
</html>
END;

?>

  1. Hallo Hackerboy,

    Woran liegt das?

    Ich habe in Deinem Script nirgends einen Zugriff auf $_GET gesehen, sondern nur auf $_SESSION. Da könnte das Problem liegen.
    Greife eben dort, wo Du gezielt etwas aus $_GET nutzen willst auch darauf zu. register_globals sollte man heutzutage nicht mehr als gegeben annehmen, zumal es nur zu solchen Problemen wie Deinem führt, wenn ich das richtig sehe.

    Grüße aus Stockholm,
    Götz

    --
    Losung für Sonntag, 13. April 2008
    Muss ich nicht das halten und reden, was mir der HERR in den Mund gibt? (4.Mose 23,12)
    Jesus sprach: Ich sage euch, die ihr zuhört: Liebt eure Feinde; tut wohl denen, die euch hassen. (Lukas 6,27)
    (zur aktuellen Losung)
    1. Nach einigen Änderungen und dem Einfügen von GET an der richtigen Stelle sieht mein Skript nun so aus. (Siehe Ende des Posts)
      Ich bin nun zu neuen Erkentnissen gekommen:
      Die Variable $_SESSION["anzahlfragen"] ist ab der 2. Seite leer.
      Die Variable $_SESSION["funcfragenummer"] hingegen funktioniert.
      Woran liegt das?

      GLG Hackerboy1993

        
      <?php  
      session_start();  
      $anzahlfragen=$_GET["anzahlfragen"];  
      $fragenummer=$_GET["fragenummer"];  
        
      function zahlenfolge($todo,$number)  
        
      ///FUNKTION ZAHLENFOLGE - ERSTELLT ZUFALLSZAHLEN  
      ///zahlenfolge("start","10");  <-- Mischt die Reihenfolge von 10 Zahlen.  
      ///zahlenfolge("ask","7");  <-- Fragt ab welche Zahl als 7tes angezeigt werden soll.  
       {  
       if($todo=="start")  
        {  
        unset($allezufallszahlen);  
        $allezufallszahlen = array();  
        $count="1";  
        while($count <= $number)  
         {  
            array_push($allezufallszahlen,$count);  
         $count++;  
         }  
        shuffle($allezufallszahlen);  
        $_SESSION["funcfragenummer"]=$allezufallszahlen;  
        $_SESSION["anzahlfragen"]=$number;  
        
        
        }  
       if($todo=="ask")  
        {  
        $re=$_SESSION["funcfragenummer"];  
        $re1=$number-1;  
        $numbertoreturn="$re[$re1]";  
        
        return $numbertoreturn;  
        }  
        unset($number);  
       }  
        
       /// </php head> ;-)  
        
      if($fragenummer=="")  
      {  
      $fragenummer="1";  
      zahlenfolge("start","$anzahlfragen");  
      $currentfrage=zahlenfolge("ask","1");  
      $nextfrage=2;  
      }  
      else  
      {  
      $anzahlfragen=$_SESSION["anzahlfragen"];  
      $currentfrage=zahlenfolge("ask","$fragenummer");  
        
      $nextfrage=$fragenummer+1;  
        
      }  
        
        
      $a=$_SESSION["anzahlfragen"];  
      echo <<<END  
      Variable anzahlfragen: $anzahlfragen Variable session anzahlfragen $a  
      <html>  
      <head><title>Frage $fragenummer</title></head>  
      <body>  
      <h2>Frage $fragenummer: $currentfrage</h2>  
      Frage Nummer: $fragenummer<br>  
      Diese Frage: $currentfrage<br>  
      END;  
      if($nextfrage>$anzahlfragen)  
      {  
      echo "Fertig";  
      }  
      else  
      {  
      echo <<<END  
      N&auml;chste Frage: <a href="zufallszahl.php?fragenummer=$nextfrage"> Frage Nummer $nextfrage</a><br>  
      END;  
      }  
      echo <<<END  
        
      </body>  
      </html>  
      END;  
        
      ?>