Pattis: Antwort der Frage bestimmt die URL-Weiterleitung

Hallo, ich möchte auf einer Seite eine Art Quiz machen.

Gibt man in ein oder mehreren Eingabefelder den richtigen Wert ein so soll auf eine bestimmte URL geleitet werden. Ist die Antwort falsch so soll ein Komentar eingeblendet werden und der Besucher soll eine erneute Möglichkeit der richtigen Eingabe haben.

Kann mir geholfen werden?

viele Grüße und besten Dank voraus!

Michael

  1. Hallo Pattis,

    Hallo, ich möchte auf einer Seite eine Art Quiz machen.

    Kann eine unterhaltsame Idee sein.

    Gibt man in ein oder mehreren Eingabefelder den richtigen Wert ein so soll auf eine bestimmte URL geleitet werden. Ist die Antwort falsch so soll ein Komentar eingeblendet werden und der Besucher soll eine erneute Möglichkeit der richtigen Eingabe haben.

    Kann mir geholfen werden?

    Da bieten sich zwei Möglichkeiten an, serverbasiert also zb. PHP oder Clientseitig zb. Javascript. Das hängt davon ab, wie sicher das Quiz sein soll, nur als harmlose Spielerei oder Manipulationssicher. Meist beantwortet sich die Frage schon, wenn es nichts zu gewinnen gibt und das Quiz beliebig wiederholt werden kann. Wie ist das bei dir?

    Gruss
    Henry

    --
    Meine Meinung zu DSGVO & Co:
    „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
    1. Es ist nur eine kleine Spielerei. Ich dachte an ein Formularfeld welches den Wert des Inhaltes prüft. Die Antwort kann auch im Quelltext stehen wäre auch nicht schlimm.

      1. Hallo,

        dann die nächste Frage: Womit kennst du dich besser aus bzw. was ist dir lieber? Javascript, PHP, …?

        Evtl. ist das hier auch etwas für dich.

        Gruß
        Jürgen

        1. Hallo Jürgen,

          vielen Dank schon mal. Die Antwort lautet eher PHP. Also vielleicht ein oder mehrere Formularfelder, dann ein sendebutton und mit senden wird der Inhalt geprüft. Ist der Inhalt mit dem von mir hinterlegten richtig gehe zu URL...\richtige-Antwort.php und ist die Antwort Falsch dann eine Nachricht oder gehe zu URL...\falsche-Antwort.php

          Gruß Michael

          1. Tach!

            Die Antwort lautet eher PHP. Also vielleicht ein oder mehrere Formularfelder, dann ein sendebutton und mit senden wird der Inhalt geprüft. Ist der Inhalt mit dem von mir hinterlegten richtig gehe zu URL...\richtige-Antwort.php und ist die Antwort Falsch dann eine Nachricht oder gehe zu URL...\falsche-Antwort.php

            Wenn du erst auf dem Server auswertest, welche Antwort richtig ist, weißt du am Client noch nicht, zu welcher URL es weitergehen soll. Du kannst also nur das Formular zu einer festen Adresse senden. Es ist allerdings ungünstig, wenn das Ziel die Seite der nächsten Frage ist, weil du einerseits im Fehlerfall wieder zurückspringen muss, andererseits die nächste Frage nichts mit der vorhergehenden zu tun hat und die Auswertung der Antwort dort eigentlich nichts zu suchen hat. Besser ist eine Technik namens Affenformular. Das Formular mit der Frage wird zur selben Seite gesendet. Hier wird es ausgewertet und im Fehlerfall das Formular erneut angezeigt. Im Gut-Fall ist die Antwort eine HTTP-Weiterleitung zur nächsten Frage. So bleibt Frage und Auswertung beieinander.

            dedlfix.

            1. Hallo, das klingt schon mal gut mit dem Affenformular wie würde der Code von einem Beispiel aussehen? VG

              1. Hilfe zur Selbsthilfe bezüglich der Weiterleitung:

                https://www.php.net/manual/en/function.header.php

                Alles andere ist im Kern ein Frage von if … then … else. Wenn Du ein wenig PHP kannst, dann solltest Du das hinbekommen.

                wie würde der Code von einem Beispiel aussehen?

                In einem Editor mit Syntaxhighlighting? "Schön bunt".

      2. Hallo Pattis,

        Es ist nur eine kleine Spielerei. Ich dachte an ein Formularfeld welches den Wert des Inhaltes prüft. Die Antwort kann auch im Quelltext stehen wäre auch nicht schlimm.

        Da würde eigentlich ein Javascript ausreichen. Aber wie ich deinen weiteren Antworten heir entnehmen kann, würdest du schon PHP bevorzugen. Eingentlich ziemlich simple in der Grundkonstruktion, zumal es ja nicht um Sicherheit geht. Das Beispiel soll dir nur die einfache Vorgehensweise erklären.

        Beachte, dass header('Location: http://www.example.com/'); nur funktioniert, wenn noch kein andere Ausgabe erfolgt ist, auch keine Leerzeichen, innerhalb PHP sind die Leerzeichen egal.

        <?php
        if( isset($_GET['antwort']) && is_numeric($_GET['antwort']) )
        {
        
        // is_numeric nur zur Sicherheit, daher auch die Antwort als Zahl deklariert
        
          if($_GET['antwort'] == 2)
          {
          header('Location: http://www.example.com/');exit;
          }
          else{echo '<h2>Die Antwort war falsch</h2>';}
        }
        
        
        ?><!DOCTYPE html>
        <html>
        <body>
        
        <h1>Was ist das beste Forum?</h1>  
        <form>
        <input type="radio" name="antwort" value="2"> SelfHtml
        <hr>
        <input type="radio" name="antwort" value="1"> Keine Ahnung     
        <hr>
        <input type="submit">  
        </form>
         
        </body>
        </html>  
        
        
        

        Gruss
        Henry

        --
        Meine Meinung zu DSGVO & Co:
        „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
        1. Hallo, das sieht schon ganz gut aus. Nur möchten ich kein type="radio" sonder type="text" und dann soll die Prüfung erfolgen. Ich habe es versucht aber komme nicht zum Ergebnis.

          vg und Danke

          1. Also ich habe das so angepasst wie ich es fast brauche:

            <?php
            if( isset($_GET['antwort']) )
            {
            
            // is_numeric nur zur Sicherheit, daher auch die Antwort als Zahl deklariert
            
             
              if($_GET['antwort'] == "Berlin")
              {
              echo 'Richtige Antwort hier geht es weiter!';
              echo '<a href="http://meinlinkiel"><button>Hier geht es weiter!</button></a>';
            
              }
              else{echo '<h2>Die Antwort war falsch</h2>';}
            }
            
            
            ?><!DOCTYPE html>
            <html>
            <body>
            
            <h1>Wie heist die Hauptstadt Deutschlands?</h1>  
            <form>
            
            <input type="text" name="antwort" value=""> 
            <hr>
            <input type="submit">  
            </form>
             
            </body>
            </html> 
            

            Jetzt würde ich nur noch auf die Gross und Kleinschreibung verzichten und gern den ausgegebenen Wert wo anders plazieren.

            VG

            1. Hallo Pattis,

              Also ich habe das so angepasst wie ich es fast brauche:

              Jetzt würde ich nur noch auf die Gross und Kleinschreibung verzichten und gern den ausgegebenen Wert wo anders plazieren.

              Dann machs so:

              if(mb_strtolower($_GET['antwort']) == mb_strtolower('BeRliN') )

              Dann ist egal wie du und der Antwortende es schreibst.

              Gruss
              Henry

              --
              Meine Meinung zu DSGVO & Co:
              „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
        2. @@Henry

          Das Markup ist kaputt:

          <!DOCTYPE html>
          <html>
          <body>
          
          <h1>Was ist das beste Forum?</h1>  
          <form>
          <input type="radio" name="antwort" value="2"> SelfHtml
          <hr>
          <input type="radio" name="antwort" value="1"> Keine Ahnung     
          <hr>
          <input type="submit">  
          </form>
           
          </body>
          </html>  
          

          Ich repariere das mal:

          • Die Sprache des Seiteninhalts muss angegeben werden (aus Gründen):
          <html lang="de">
          
          • Die verwendete Zeichencodierung sollte angegeben werden.
          • Die Seite braucht einen Titel.
          • Damit die Seite auf Mobilgeräten vernünftig dargestellt wird, bedarf es einer Angabe (Tutorial: Grundgerüst):
            <head>
              <meta charset="utf-8" />
              <title>Was ist das beste Forum?</title>
              <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            </head>
          
          • Alle Formularfelder brauchen eine Beschriftung.
          • Buttons auch.
          • Die Radiobuttons gehören zusammen, nicht getrennt (hr). Wenn bei der visuellen Ausgabe Linien gewünscht sind, ist das Sache von CSS.
          • Für Buttons gibt es das button-Element. type="submit" ist default, kann also auch weggelassen werden.
              <h1>Was ist das beste Forum?</h1>
              <form>
                <label>
                  <input type="radio" name="antwort" value="2"> SelfHtml
                </label>
                <label>
                  <input type="radio" name="antwort" value="1"> Keine Ahnung
                </label>     
                <button type="submit">Weiter</button>
              </form>
          

          Nun sind zwar die Antworten beschriftet, die Frage allerdings steht nicht dabei, sondern ganz woanders.

          • Radiobutton sind meist in einem fieldset mit zugehöriger Beschriftung gut aufgehoben:
              <h1>Was ist das beste Forum?</h1>
              <form>
                <fieldset>
                  <legend>Was ist das beste Forum?</legend>
                  <label>
                    <input type="radio" name="antwort" value="2"> SelfHtml
                  </label>
                  <label>
                    <input type="radio" name="antwort" value="1"> Keine Ahnung
                  </label>     
                </fieldset>
                <button type="submit">Weiter</button>
              </form>
          

          Die Dopplung von „Was ist das beste Forum?“ soll natürlich nicht so sein. Womöglich ist das gar nicht die Seitenüberschrift, sondern <h1>Ein kleines Quiz</h1>?

          Ansonsten könnte es vielleicht auch so gehen (ungetestet):

              <h1 id="heading">Was ist das beste Forum?</h1>
              <form>
                <fieldset aria-labelledby="heading">
                  <label>
                    <input type="radio" name="antwort" value="2"> SelfHtml
                  </label>
                  <label>
                    <input type="radio" name="antwort" value="1"> Keine Ahnung
                  </label>     
                </fieldset>
                <button type="submit">Weiter</button>
              </form>
          

          LLAP 🖖

          --
          „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
          „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

          —Marc-Uwe Kling
          1. @@Gunnar Bittersmann

                <h1 id="heading">Was ist das beste Forum?</h1>
                <form>
                  <fieldset aria-labelledby="heading">
            

            Auf das Naheliegendste kommt man™ natürlich nicht. Wozu hat man denn Freunde? 😉

                <form>
                  <fieldset>
                    <legend><h1>Was ist das beste Forum?</h1></legend>
            

            „HTML ist meistens einfach. Zumindest einfacher als ARIA. 😁“Marco Zehe

            LLAP 🖖

            --
            „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
            „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

            —Marc-Uwe Kling
            1. Hi,

                      <legend><h1>Was ist das beste Forum?</h1></legend>
              

              Ich würd ja eher "Welches" statt "Was" schreiben in diesem Zusammenhang.

              cu,
              Andreas a/k/a MudGuard

              1. Hallo

                        <legend><h1>Was ist das beste Forum?</h1></legend>
                

                Ich würd ja eher "Welches" statt "Was" schreiben in diesem Zusammenhang.

                Das heißt „Wie bitte?“ und nicht „Was?“. Also:

                        <legend><h1>Wie bitte ist das beste Forum?</h1></legend>
                

                *scnr*

                Tschö, Auge

                --
                Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
                Hohle Köpfe von Terry Pratchett
                1. @@Auge

                          <legend><h1>Was ist das beste Forum?</h1></legend>
                  

                  Ich würd ja eher "Welches" statt "Was" schreiben in diesem Zusammenhang.

                  Das heißt „Wie bitte?“ und nicht „Was?“.

                  Da fehlen Kommas Kommata!!1elf

                          <legend><h1>Wie, bitte, ist das beste Forum?</h1></legend>
                  

                  LLAP 🖖

                  --
                  „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
                  „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

                  —Marc-Uwe Kling
            2. Hej Gunnar,

              @@Gunnar Bittersmann

              Auf das Naheliegendste kommt man™ natürlich nicht. Wozu hat man denn Freunde? 😉

                  <form>
                    <fieldset>
                      <legend><h1>Was ist das beste Forum?</h1></legend>
              

              ich bin auch so ein man™. Wie oft in meinem Leben habe ich schon so etwas geschrieben:

              legend {[…]}
              fieldset fieldset legend {[…]}
              fieldset fieldset fieldset legend {[…]}
              

              Wie viel einfacher, eleganter und besser lesbar ist dagegen

              form h1 {[…]}
              form h2 {[…]}
              form h3 {[…]}
              

              Marc

              --
              Ceterum censeo Google esse delendam
          2. Hallo Gunnar,

            alles richtig, was du hier schreibst. Aber es ging nur um ein kleines Beispiel zum Scriptablauf, nicht wie erstelle ich komplettes HTML.

            Ich denke mal das -1 kam nicht von dir(?), weil du machst dir die Mühe ja auch nicht immer in deinen Beispielen.

            Gruss
            Henry

            --
            Meine Meinung zu DSGVO & Co:
            „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
            1. @@Henry

              alles richtig, was du hier schreibst. Aber es ging nur um ein kleines Beispiel zum Scriptablauf, nicht wie erstelle ich komplettes HTML.

              Du hattest aber komplettes HTML in deinem Beispiel. Und wenn man ein Beispiel gibt, dann sollte das so sein, dass andere sich daran auch ein Beispiel nehmen können.

              Andere verfügen nicht unbedingt über den Hintergrund zu entscheiden, welchen Teil sie davon verwenden sollten und welchen nicht; sie verwenden alles. Und deshalb sollte ein Beispiel komplett richtig sein.

              Bei einem Beispiel mit schlechtem Markup kann der Scriptablauf noch so gut sein; es kommt am Ende schlechtes Markup heraus. Schlecht für die Nutzer. Deshalb kann ich „Aber es ging nur um ein kleines Beispiel zum Scriptablauf“ so nicht durchgehen lassen. Es geht um das Ganze, was für Nutzer rauskommt.

              Ich denke mal das -1 kam nicht von dir(?)

              Nochmal nachgekuckt: doch, kam es. Aus ebengenanntem Grund.

              weil du machst dir die Mühe ja auch nicht immer in deinen Beispielen.

              Oops? Dann bitte ich auch um −1, wenn ich’s nicht besser verdient habe.

              LLAP 🖖

              --
              „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
              „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

              —Marc-Uwe Kling
            2. Ich denke mal das -1 kam nicht von dir(?), weil du machst dir die Mühe ja auch nicht immer in deinen Beispielen.

              Vermutlich war es lediglich eine Person welche nicht gänzlich grundlos befürchtet, dass sich Dein Beispiel mitsamst den, unzweifelhaft wegen des Modellcharakters von Dir in Kauf genommenen Schwächen, nach "Copy & Paste" quasi "bytegenau" auf der Webseite des Fragestellers wieder findet.

              Oder jemand, der sich darüber geärgert hat, dass Du es versäumt hast, den Code mit einer kleinen Angabe "schön bunt" zu machen.

              Auf überhaupt ganz und gar keinen Fall war es indes jemand, der nicht äußerst genau weiß wie zurückhaltend und vorsichtig man beim Klicken auf auch nur irgend etwas sein sollte.