Passwortschutz

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

  • Passwortschutz

    Moin moin,

    ich habe die Aufgabe ein bereits komplettes
    Script zu bearbeiten und nach Möglichkeit zu verbessern.

    Dabei handelt es isch um den ersten Teil eines Arbeitskarten Systems.
    Teil1:Passwortschutz

    Es dränegn sich mir ein paar fragen bei der Funktion mancher Zeilen auf:

    PHP-Code:
    <?php
      $PASSWORT 
    "bitteaendern";
    ?>
    am anfang wird zwar diese Variable gesetzt, jedoch
    scheint diese nicht wirklich berücksichtigt zu werden.

    PHP-Code:
    <?php
    if ($param_passwd) {
    if (
    $param_passwd != $PASSWORT) {
    echo 
    "<h2>Das Passwort war falsch!</h2>"//Ausgabe der Fehlermeldung; bei Fehleingabe
    } else {
    ?>
    Diese Stelle soll meiner Ansicht nach die Meldung "Passwort Falsch!" ausgeben, sollte das eingegeben nicht mit dem in der Variabel
    gesetzten Wort übereinstimmen..dies ist allerdings nicht der fall.

    Mein Problem ist:
    Selbst nach falscher Passworteingabe wird man zu der
    eigentlich geschützen Seite weitergeleitet.

    Ich habe die SuFu auf der Suche nach einem ähnlichen Problem genutzt,
    allerdings scheint mein Problem zu einfach zu sein :P
    Bin ein ziemlicher Anfänger, beschäftige mich seit 2tagen erst ausführlich mit der Sache. Wäre gut wenn jemand sich Zeit nehmen könnte mir
    zu sagen was die Ursache meines Problems ist.

  • #2
    Diese Stelle soll meiner Ansicht nach die Meldung "Passwort Falsch!" ausgeben, sollte das eingegeben nicht mit dem in der Variabel
    gesetzten Wort übereinstimmen..dies ist allerdings nicht der fall.
    Dann mach in dem Teil, in den du immer reinkommst mal das folgende
    PHP-Code:
    var_dump($param_passwd,$PASSWORT);
    exit; 
    und vergleiche die Ausgaben. Müssten dann ja wohl übereinstimmen...

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      ich gehe schwer davon aus, dass

      $param_passwd

      nicht gesetzt ist.

      bau mal ein:

      PHP-Code:
      <?php

      echo "uebergebenes passwort lautet: ".$param_passwd;

      if (
      $param_passwd) {
      if (
      $param_passwd != $PASSWORT) {
      echo 
      "<h2>Das Passwort war falsch!</h2>"//Ausgabe der Fehlermeldung; bei Fehleingabe
      } else {
      ?>
      ich wette, da kommt keins bei rum
      **********
      arkos
      **********

      Kommentar


      • #4
        danke für die schnellen antworten,
        ich habe jetzt zumindest mal die meldung
        "Passwort Falsch!" gesehen, allerdings
        kommt diese direkt beim laden der seite,
        direkt über dem Eingabeformular.

        Ich denke das ich zu wenig Informationen über mein Script
        herausgegeben habe, darum ist hier jetzt ein ganzer Ausschnitt daruas, indem die Fehler liegen müssen.

        Hier der Ausschnitt:

        PHP-Code:
        <?php
          $PASSWORT 
        "bitteaendern";
        ?>

        <html>
        <head>
        <title>Arbeitskarten Login</title>
        </head>

        <body bgcolor="white" text="black" link="red" vlink="darkblue" alink="cyan">
        <?php 
        if ($param_passwd != $PASSWORT)
        echo 
        "STFU";
        ?>

        <h1 align="center">
        <font color=#000000><u>Arbeitskarten Login</u></font>
        </h1>

        <?php

        echo "uebergebenes passwort lautet: ".$param_passwd;

        if (
        $param_passwd) {
        if (
        $param_passwd != $PASSWORT) {
        echo 
        "<h2>Das Passwort war falsch!</h2>"//Ausgabe der Fehlermeldung; bei Fehleingabe
        } else {
        ?>


        <!-- es folgt nun: Fenster mit Arbeitskarten öffnen (das was in <script> xXx </script> steht) -->
        <script>
        function openpopup() {
        var popurl = "arbeitskarte.php"
        winpops = window.open(popurl,"","fullscreen=yes,left=NaN,top=NaN")
        }
        openpopup()
        </script>

        <?php
          
        }
        }
        ?>

        </body>
        </html>
        Ich hoffe dadurch entsteht nun mehr Klarheit =)

        Falls ihr die Lösung findet, wäre es nett mir noch zu erklären
        weshalb es falsch ist und wie es richtig sein sollte.

        (wurde in den beiden antworten ja auch schon gemacht, sage es nur
        weil ich in anderen Foren - nicht php, aber auch support foren - schon so manch tolle lösungen ohne wirkliche hilfe als antworten bekommen habe)

        Kommentar


        • #5
          error_reporting gemäß regeln auf E_ALL gestellt?

          Dann solltest du eigentlich diverse "undefinierte Variablen" mitgeteilt bekommen, die es zuerst zu beheben gilt.


          BTW: mit dem Zitat "Passwort Falsch!" meinst du sicher "Das Passwort war falsch!". Solche Kleinigkeiten sind entscheidend, wenn es darum geht, die richtige Stelle zu finden...

          Kommentar


          • #6
            BTW: Wenn ich deinen Code ausführe, dann steht da nirgends "passwort falsch". Vermute also, dass das nicht so ist, wie du behauptest.

            Kommentar


            • #7
              *nicht mehr so ist wie du behauptest

              ich hab den unveränderten Code gepostet.

              siehe hier (veränderte version):

              PHP-Code:
              <?php
                $PASSWORT 
              "bitteaendern";
              ?>
              <?php
                $param_passwd 
              "bitteaendern2";
              ?>

              <html>
              <head>
              <title>Arbeitskarten Instandhaltung (BDE)</title>
              </head>

              <body bgcolor="white" text="black" link="red" vlink="darkblue" alink="cyan">
              <?php 
              if ($param_passwd != $PASSWORT)
              echo 
              'onLoad="document.pass.param_passwd.focus();"';
              ?>

              <h1 align="center">
              <font color=#000000><u>Arbeitskarten Instandhaltung</u></font>
              </h1>

              <?php

              echo "uebergebenes passwort lautet: ".$param_passwd;

              if (
              $param_passwd) {
              if (
              $param_passwd != $PASSWORT) {
              echo 
              "<h2>Das Passwort war falsch!</h2>"//Ausgabe der Fehlermeldung; bei Fehleingabe
              } else {
              ?>


              <!-- es folgt nun: Fenster mit Arbeitskarten öffnen (das was in <script> xXx </script> steht) -->
              <script>
              function openpopup() {
              var popurl = "arbeitskarte.php"
              winpops = window.open(popurl,"","fullscreen=yes,left=NaN,top=NaN")
              }
              openpopup()
              </script>
              <?php
                
              }
              }
              ?>

              </body>
              </html>
              btw: das mit E_ALL war ganz gut. hatte wirklich vergessen die Variable
              $param_passwd zu setzen, wie es auch zuvor von einem der Mitglieder die geantwortet haben angenommen wurde.
              Zuletzt geändert von browny; 22.10.2007, 14:04.

              Kommentar


              • #8
                *lol* auch sehr gut. Hauptsache du vergleichst zwei FEST DEFINIERTE Passwörter miteinander. Naja, immerhin ersparst du dem User so das eingeben eines Passwortes. Fragt sich nur, warum du den Code nicht gleich in die Tonne drückst!

                Natürlich erscheint jetzt
                Das Passwort war falsch!
                Das ist aber auch kein Wunder, wenn man bedenkt, dass
                PHP-Code:
                <?php
                  $PASSWORT 
                "bitteaendern";
                  
                $param_passwd "bitteaendern2";
                ?>
                zwei unterschiedliche Werte haben.

                Bitte noch mal die Logik deines Codes übrprüfen. Das hat jetzt erstmal gar nichts mit PHP zu tun....

                Kommentar


                • #9
                  verdammt :P
                  also hab ich eine antwort missverstanden:
                  Es wurde ja gesagt das ich die Variable setzen soll,
                  nur dadurch setze ich ja dann direkt dass, was der User
                  eigentlich eingeben soll =O

                  Also muss ich diesen Teil:

                  PHP-Code:
                  <?php
                    $param_passwd 
                  "XYZ";
                  ?>
                  so einstellen, das er das einsetzt was der User eingibt
                  und das dann mit dieser Variable vergleicht:

                  PHP-Code:
                  <?php
                    $PASSWORT 
                  "bitteaendern";
                  ?>


                  so. nun ist der Vergleich an sich schon vorhanden:

                  PHP-Code:
                  <?php

                  echo "uebergebenes passwort lautet: ".$param_passwd;

                  if (
                  $param_passwd) {
                  if (
                  $param_passwd != $PASSWORT) {
                  echo 
                  "<h2>Das Passwort war falsch!</h2>"//Ausgabe der Fehlermeldung; bei Fehleingabe
                  } else {
                  ?>
                  hier wird ja gesagt, wenn das Passwort NICHT dasselbe ist,
                  wie in $PASSWORT festgelegt, dann führt er echo aus, etc.


                  Ich verstehe allerdings nicht ganz wozu er an dieser Stelle das
                  PHP-Code:
                  echo "uebergebenes passwort lautet: ".$param_passwd
                  braucht. Wozu sollte das Passwort angezeigt werden das zuvor eingegeben wurde?
                  Um zu schauen ob man sich vertippt hat?

                  EDIT: und meine andere wichtige Frage wäre dann, wie man denn die Variable $param_passwd definieren soll, wenn die Ausgabe doch erst von User eingegeben wird.
                  Zuletzt geändert von browny; 22.10.2007, 14:24.

                  Kommentar


                  • #10
                    *move* nach Projekthilfe

                    Fertiger Code folgt:

                    PHP-Code:
                    <?php 

                    /**
                     * Konfiguration
                     */
                    error_reporting(E_ALL);

                    $password 'geheim';

                    ?>

                    <html>

                    <head>
                      <title>Braunies Passwortscript</title>
                    </head>

                    <body>

                    <h1>Braunies Passwortscript</h1>

                    <?php

                    if(!isset($_POST['password']) || $password != $_POST['password'])
                    {
                        
                        
                    // Fehlermeldung
                        
                    echo '<p class="message">Das Passwort war falsch!</p>';
                        
                    }
                    else
                    {

                    ?>

                    <!-- es folgt nun: Irgend ein seltsamer JS-Code -->
                    <script type="text/javascript">
                      var popurl = "arbeitskarte.php"
                      winpops = window.open(popurl,"","fullscreen=yes,left=NaN,top=NaN")
                    </script>

                    <?php

                    }

                    ?>

                    </body>
                    </html>

                    Kommentar


                    • #11
                      Hauptsache du vergleichst zwei FEST DEFINIERTE Passwörter miteinander.
                      Das wäre doch dann ganz einfach noch ausbaubar
                      OffTopic:

                      PHP-Code:
                      $passwort 'nichtaendern';
                      $passwort1 'aendern';
                      $passwort2 'nix';
                      $passwort4 'gewesen';
                      $passwort5 'ausserspesen';
                      if(
                      $param_passwd != $passwort1 && $param_passwd != $passwort2 && 
                      $param_passwd != $passwort3 && $param_passwd != $passwort4 && 
                      $param_passwd != $passwort5){
                        die(
                      'Falsches Passwort');


                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Es wurde ja gesagt das ich die Variable setzen soll,
                        Nein, es wurde gesagt, dass eine Variable NICHT gesetzt IST.

                        Also muss ich diesen Teil:
                        $param_passwd = "XYZ";
                        so einstellen, das er das einsetzt was der User eingibt
                        jain, denn dann kannst du ihn eigentlich gleich weglassen...

                        Ich verstehe allerdings nicht ganz wozu er an dieser Stelle das [PHP-Code] braucht.
                        WAS "braucht"???

                        Wozu sollte das Passwort angezeigt werden das zuvor eingegeben wurde?
                        Das ist natürlich ziemlich großer Unfug. Ich hatte gehofft, du hättest das nur zu Testzwecken gemacht.

                        EDIT: und meine andere wichtige Frage wäre dann, wie man denn die Variable $param_passwd definieren soll, wenn die Ausgabe doch erst von User eingegeben wird.
                        Dazu gibt es das globale Array $_POST. Aber das sind Grundlagen, die du dir selbst aneignest!

                        Kommentar


                        • #13
                          Original geschrieben von browny



                          Ich verstehe allerdings nicht ganz wozu er an dieser Stelle das
                          PHP-Code:
                          echo "uebergebenes passwort lautet: ".$param_passwd
                          braucht. Wozu sollte das Passwort angezeigt werden das zuvor eingegeben wurde?
                          Um zu schauen ob man sich vertippt hat?
                          nein, das war sogenanntes adhoc-debugging. nur um zu sehen, ob überhaupt irgendwas in der variablen $param_passwd steht...
                          **********
                          arkos
                          **********

                          Kommentar


                          • #14
                            ich danke euch =D
                            meine fragen wurden alle beantwortet
                            Ich lerne wie gesagt noch die grundlagen,
                            aber ich wollte dieses heute wissen, weil
                            es wirklich wie ein stein im weg
                            lag und ich nicht weitergekommen bin,
                            dieses hat sich ja nun gelöst ;D

                            Kommentar


                            • #15

                              aber eine Frage hab ich doch noch, dann kann ich mich dem
                              nächsten Teil des Scripts witmen:

                              Der User bekommt jetzt direkt beim aufruf der Page
                              angezeigt dass, das Passwort falsch war, wie hier ja angegeben:

                              PHP-Code:

                              if(!isset($_POST['password']) || $password != $_POST['password'])
                              {
                                  
                              // Fehlermeldung
                              echo '<b><p><font size="+2"><font color="#FF0000">Das Passwort war falsch!</p></font></font></b>'

                              Gibt es eine Möglichkeit, diese Meldung beim aktualisieren/normalen aufrufen einfach zu unterdrücken und stattdessen einfach keine meldung auszugeben?

                              Kommentar

                              Lädt...
                              X