Array und Session

  • Array und Session

    Hi zusammen,

    Ich habe eine PHP Seite welche ein Formular enthält welches PHP_SELF ausführt. In der ersten Zeile initiere ich eine Session. Dann habe ich ein Array mit Fragen und der Benutzer soll darauf Antworten eingeben. Funktioniert soweit alles. Nur beim ansehen der Sessionvariablen bekomme ich es nicht gebacken das die richtig zugeordnet werden. Grundsätzlich wird es um 1 verschoben.

    Hier mein Code:

    Quellcode

    1. <?php session_start();?>
    2. <?php
    3. $nummer++;
    4. ?>
    5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    6. <html>
    7. <head>
    8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    9. <title>Unbenanntes Dokument</title>
    10. <style type="text/css">
    11. <!--
    12. .Stil1 { color: #FFFFFF;
    13. font-weight: bold;
    14. }
    15. -->
    16. </style>
    17. </head>
    18. <body>
    19. <form name="form1" method="GET" action="<?php $PHP_SELF; ?>">
    20. <?php
    21. $frage = array("",
    22. "Wie lautet deine Emailadresse",
    23. "Wie heißt du?",
    24. "Mit wem möchtest du eine Nacht verbringen?");
    25. $quest = $frage[$nummer];
    26. ?>
    27. <table width="996" height="496" border="0" align="center">
    28. <tr>
    29. <td background="../images/register.gif"><table width="800" border="0" align="center">
    30. <tr>
    31. <td height="296"><p>Frage: <?php echo $nummer; ?>:</p>
    32. <p><?php echo $quest; ?></p>
    33. <p align="center">
    34. <textarea name="answer" cols="100" rows="5"></textarea>
    35. </p></td>
    36. </tr>
    37. <tr>
    38. <td height="22"><div align="right" class="Stil1">
    39. <div align="center">
    40. <input name="weiter" type="submit" value="Weiter">
    41. <input name="nummer" type="hidden" value="<?php echo $nummer; $_SESSION[$frage[$nummer]] = $answer;?>">
    42. </div>
    43. </div></td>
    44. </tr>
    45. </table></td>
    46. </tr>
    47. </table>
    48. </form>
    49. </body>
    50. </html>
    Alles anzeigen


    Ich weiß das ich sowas selbst lösen sollte, aber nach 2 Stunden rumprobieren dachte ich mir hole ich mir Hilfe von Leuten die sich da auskennen :)

    Matthias
    Das Leben ist binär - du bist eine 1, oder eine 0
  • irgendwie ist register_globals gänzlich an deinem Script vorbeigegangen.
    Statt $nummer willst du $_SESSION['nummer'] und statt $PHP_SELF willst du $_SERVER['PHP_SELF']
    Außerdem solltest du Logik, wie Variablenzuweisungen niemals in dem value einer HTML Ausgabe machen. Ich denke aber die ganze Zeile mit dem Hidden-Feld ist sowieso überflüssig?

    Also am besten nochmal neu beginnen. Hier mal ein Anfang:

    Quellcode

    1. <?php
    2. session_start();
    3. // Alle Fragen
    4. $frage = array(
    5. "Wie lautet deine Emailadresse",
    6. "Wie heißt du?",
    7. "Mit wem möchtest du eine Nacht verbringen?"
    8. );
    9. $count = count($frage);
    10. // welcher Schritt
    11. $_SESSION['nummer'] = isset($_SESSION['nummer']) ? ++$_SESSION['nummer'] : 0;
    12. $nr = $_SESSION['nummer'];
    13. // Speichere Antwort
    14. if(isset($_GET['answer'])) {
    15. $_SESSION['antworten'][] = $_GET['answer'];
    16. }
    17. // Frage ausgeben
    18. if($nr < $count) {
    19. print $frage[$nr];
    20. // Auswertung ausgeben
    21. } else {
    22. for($i=0; $i<$count; $i++) {
    23. printf("%s %s<br />", $frage[$i], $_SESSION['antwort'][$i]);
    24. }
    25. }
    26. ?>
    Alles anzeigen