Verschleiern von Daten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verschleiern von Daten

    Hallo

    ich bin geerade dabei ein Multiple Choice Test zu basteln bei dem die
    Fragen und Antworten aus einer Db geholt werden.
    In dieser wird die richtige Antwort via Tinyint auf 1 die falsche auf 0 gesetzt.

    In meinem Formular lese ich nun die Db aus.
    Hier wird ebenfalls der radiobutton mit dem value aus der Db gesetzt
    PHP-Code:
    <input type="radio" value="'.$row['ergebnis'],'"
    wenn nun jemand die korrekte Antwort wählt wird ein Zähler um eins erhöht.

    das funzt ja auch alles super.

    Nun gibt es abwer bestimmt ein paar schlaue, die sich den Quelltext
    anschauen und schlimmstensfalls :-) auch verstehen, und können somit die richtige Antwort aus dem Code herauslesen.

    gibt es da ne Möglichkeit das irgendwie anders zulösen oder den value="" zu verschleiern?

  • #2
    wo wird der zähler erhöht?
    warum stehen die antworten in der queltext überhaupt?
    Ich glaube, dass du Antwort selber kennst.
    1)erst werden die Fragen gestellt und formular abgesendet
    2)antworten werden Serverseitig ausgewertet und bei richtig, wird Zähler auch Serverseitig erhöht.
    Slava
    bituniverse.com

    Kommentar


    • #3
      Hi,

      Speichere zu jeder Antwort, ob 0 oder 1 die richtige Lösung ist und vergleiche darauf, anstatt Wert 1 immer als richtig anzusehen.

      Gruß Thomas

      Kommentar


      • #4
        @slava

        Das das document serverseitig ausgewertet werden soll dass weiß ich ja auch...aber ich habe da wohl einen Gedankenfehler ..weiß bloss net wo.
        PHP-Code:
        $ergebnis +=$_POST['wahl'];

        <
        form action="'.$PHP_SELF.'" method="POST">
        <
        input type="button" name="wahl" 
        value="'.$row['richtige_antwort_1'].'">

        <
        input type="button" name="wahl" 
        value="'.$row['richtige_antwort_2'].'">

        <
        input type="button" name="wahl" 
        value="'.$row['richtige_antwort_3'].'">

        </
        form
        Zur Zeit holt der den datensatz aus de DB und setzt die Varible "wahl" auf den wert der in der db steht. Das ist entweder 0 oder 1 .
        Je nachdem welche antwortich als richtig gesetzt habe.
        Bei dem erneuten Aufruf des Scripts wird dem $ergebnis der Wert von "wahl" dazuaddiert.

        Mein ganzes script funktioniert ja auch ...wie gesagt, was mich stört , ist das die Antwort im Quelltext in form von value="1" und value="0" steht. Das stört mich halt.

        Kommentar


        • #5
          tabelle Frage
          id | frage

          tabelle Antworten
          id| frageid | antwortText | richtig(ja, nein)

          und in deinem formular darf nichts auser id von Frage und id von Antwort in der value stehen.
          ist formulardaten angekommen
          alle antworten zur Frage, b.z.w Fragen aus DB lesen

          select Antworten.id as aid, richtig from Antworten, Frage where
          Frage.id=$_POST['frageid']
          b.z.w where Frage.id in(id von Fragen, die auf der Seite vorkommen)

          jetzt muss du ankommenden Antworten mit aus DB geholten werten abgleichen.
          wenn deine radios und checkboxen z.b.s "antwort_".$Antwortid heisen,
          dann kannst du schon bei lesen deiner sqlabfrage entscheiden, ob user richtig beantwortet hat
          grob:
          if(isset($_POST["antwort_".$ergebnis['aid']]) && $ergebnis['aid']="ja")
          echo "richtig";
          für checkboxen würde es hinhauen.
          bei falschen antworten muss mann so abfragen
          if(isset($_POST["antwort_".$ergebnis['aid']]) && $ergebnis['aid']="nein")
          echo "falsch";


          Zuletzt geändert von Slava; 22.06.2006, 21:08.
          Slava
          bituniverse.com

          Kommentar


          • #6
            du meinst ich soll eine Tabelle Fragen und eine Tabelle antworten machen? mhh,
            Zu Zeit habe ich eine Tabelle

            Frage 1 (varchar 100)
            Antwort 1(varchar50)
            Ergebnis 1(tinyint)
            Antwort 2(varchar50)
            Ergebnis 2(tinyint)
            Antwort 3(varchar50)
            Ergebnis 3(tinyint)

            und hier vergleich ich ....mh ok lass mich über deinen Ansatz
            nachdenken
            Zuletzt geändert von kasIQ; 22.06.2006, 21:10.

            Kommentar


            • #7
              hm
              das ist natürlich nicht sehr gute model, da sie sich nicht mehr erweitern lässt ,und auch standart abfragen von sql haben da auch eine geringe spielraum.
              Slava
              bituniverse.com

              Kommentar


              • #8
                Bei dem erneuten Aufruf des Scripts wird dem $ergebnis der Wert von "wahl" dazuaddiert.
                speichre das Ergebnis in einer Sessionvariable und speichre es erst am Schluß in der DB und/oder gib es aus.

                Kommentar


                • #9
                  Du kannst als echten value den Rest modulo eine Zahl nehmen.

                  zB. <input type=radio value=random(15,25)*3+falsch/richtig> .

                  Dann ist es im Quelltext verschleiert, und für die Auswertung im php: value = value % 3. Wichtig ist, dass der Multiplikator ungerade ist, damit falsche und richtige Werte nicht an der letzten Stelle erkannt werden.

                  Nun wird ein zahlenbegabter Mensch es beim Faktor 3 noch erkennen, dass (v.a. bei Vielfachauswahl) die Zahlen durch 3 aufgehen oder nicht. Aber z.B. beim Faktor 13 oder 17 merkt das niemand mehr.

                  Bei vielfachauswahl kannst Du auch 0 und 1 für falsch, und 2 für richtig nehmen. dh die falschen radiobuttons habe nicht einheitlich eine 0. Beim Faktor 13 z.B. kannst du 10 Reste für falsch und 3 für richtig verwenden..

                  Man kann den Faktor in der Session speichern, oder, ebenfalls verschleiert mit einem master-Faktor, als hidden-feld im Formular. Dann kann der Faktor bei jeder Ausgabe geändert werden. Nochmals mehr Möglichkeiten sind, z.B. die Funktion crypt(), oder eine base64-Codierung, oder eine md5-Verschleierung des zuerst angegebenen Zufallswertes.

                  Irgendetwas davon könnte passen, nun hast Du eine Auswahl.

                  Kommentar


                  • #10
                    Re: Verschleiern von Daten

                    Original geschrieben von kasIQ
                    wenn nun jemand die korrekte Antwort wählt wird ein Zähler um eins erhöht.
                    Ich habe noch eine Frage, nämlich was heisst das genau? bzw. ist das im Formular per Javascript, wird der Zähler angezeigt, oder --?

                    Kommentar

                    Lädt...
                    X