Skript funktioniert nur einmal.
Hackerboy1993
- php
0 Götz
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ächste Frage: <a href="zufallszahl.php?fragenummer=$nextfrage"> Frage Nummer $nextfrage</a><br>
END;
}
echo <<<END
</body>
</html>
END;
?>
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
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ächste Frage: <a href="zufallszahl.php?fragenummer=$nextfrage"> Frage Nummer $nextfrage</a><br>
END;
}
echo <<<END
</body>
</html>
END;
?>