Walter Haus: Passwort eingabe --> Quelltext

Hallo,

Ich suche den Quelltext von einer Passwort eingabe.
Sollte ungefähr so funktionieren:
In einem Fenster befindet sich die eingabe(Texfeld und Absendbutton).
Der Absendebutton verweist dann bei einer richtigen Eingabe des Passwortes auf eine von mir gewünschte URL
und bei falscher ausgabe auch. Könnt ihr mir dsa vielleicht weiter helfen?

Danke schon mal im vorraus
Walter Haus

  1. Hallo,
    mach als erstes ein Formular mit einem Textfeld und einem Ansend (Submit) Button. Das Formular muss die methode "post" haben.

    pass.pl:
    -----------------------------(Diese Zeile nicht eintragen)

    #!/usr/bin/perl -w

    #Wenn du dieses Script benutzt, würde ich mich über einen Link auf
    #www.manga-zone.com freuen.
    #Hier deine Daten:

    #Dein Passwort:
    $passwort = "Pass";

    #Bei richtiger Eingabe zu dieser Url:
    $site = "http://www.deine-seite.de";

    #Was tun bei falscher eingabe ?
    #Wenn interne Fehlerseite angezeigt werden soll:
    $intern = "yes";

    #bei $intern = "no"; zu dieser Url:
    $wrong = "http://www.deine-fehlerseite.de";

    ################# Well Done ################
    ############################################
    ############################################

    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs) {
            ($name, $value) = split(/=/, $pair);
            $value =~ tr/+/ /;
            $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
            $value =~ s/<([^>]|\n)*>//g;
            $value =~ s/<//g;
            $value =~ s/>//g;
            $FORM{$name} = $value;
    }

    if ($FORM{'Pass'} eq $passwort)
    {
    print "location: $site";
    }
    else
    {
      if {$intern eq "yes")
      {
        print "Content-type: text/html\n\n";
        print "Der Zugriff wurde verweigert, da das Passwort falsch war.
      }
      else
      {
        print "location: $wrong";
      }
    }

    -----------------------------(Diese Zeile nicht eintragen)

    Ich habe dieses Script nicht getestet und nur hier im Forum schnell entwickelt. Ich hoffe dass es funzt, wenn nicht meld dich einfach nocheinmal.

    Viele Grüße
    Torwächter

    1. hab die exit; Befehler vergessen:

      Dieses Script ist neu:

      pass.pl:
      -----------------------------(Diese Zeile nicht eintragen)

      #!/usr/bin/perl -w

      #Wenn du dieses Script benutzt, würde ich mich über einen Link auf
      #www.manga-zone.com freuen.
      #Hier deine Daten:

      #Dein Passwort:
      $passwort = "Pass";

      #Bei richtiger Eingabe zu dieser Url:
      $site = "http://www.deine-seite.de";

      #Was tun bei falscher eingabe ?
      #Wenn interne Fehlerseite angezeigt werden soll:
      $intern = "yes";

      #bei $intern = "no"; zu dieser Url:
      $wrong = "http://www.deine-fehlerseite.de";

      ################# Well Done ################
      ############################################
      ############################################

      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
      @pairs = split(/&/, $buffer);
      foreach $pair (@pairs) {
              ($name, $value) = split(/=/, $pair);
              $value =~ tr/+/ /;
              $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
              $value =~ s/<([^>]|\n)*>//g;
              $value =~ s/<//g;
              $value =~ s/>//g;
              $FORM{$name} = $value;
      }

      if ($FORM{'Pass'} eq $passwort)
      {
      print "location: $site";
      exit;
      }
      else
      {
        if {$intern eq "yes")
        {
          print "Content-type: text/html\n\n";
          print "Der Zugriff wurde verweigert, da das Passwort falsch war.
          exit;
        }
        else
        {
          print "location: $wrong";
          exit;
        }
      }

      -----------------------------(Diese Zeile nicht eintragen)

      Viele Grüße
      Torwächter

      1. Hallo

        Ich muss dich leider entäuschen, funktioniert nicht.
        Ich habe dein Script in meine Html eingebunden,
        ALSO:
        die index.html mit dem Textfeld und dem abschickbutton --> das alles verweist dann auf das cgi script
        macht er aber nicht, entweder er sagt, das die URL nicht existiert oder er sagt mir das keine Daten vorhanden sind.
        Vielleicht hast du noch zeit den Quelltext zu berichtigen.

        Danke Walter Haus

        P.S.ist eigentlich wichtig ob die Datei eine *.cgi oder eine *.pl datei ist?

        1. Hallo Walter,
          nein ist nicht wichtig, aber mir gefällt .pl besser :)

          könntest du mir mal den Quellcode deiner HTML Seite schicken, ich pass dann das Script an.

          Viele Grüße
          Torwächter

          1. Hier ist der Quelltext --> ich habe deinen Quellcode pwd.cgi genannt

            <html>
            <HEAD>
            </HEAD>
            <form action="pwd.cgi" Method="Post">

            <br>
            <center><h2>Dieser Bereich ist geschützt.</H2>
            <h3>Zum eintreten in den geschützten Bereich, bitte Passwort eingeben</H3>
            <br>

            <input type="Text" Name="eingabe">
              <input type="submit" value="OK">
             </center>

            </form>

            </html>

            Walter Haus

            P.S.arbeite zurzeit offline. Habe bei mir einen Xitami Webserver aufgesetzt und Perl installiert.

            Vielleicht hilft dir das.

            Danke

            1. Hallo Walter,
              Ganz einfach, du mußt den Code ändern :

              <form action="pwd.cgi" Method="Post">
              muß
              <form action="cgi-bin/pwd.cgi" Method="post">
              sein.

              <input type="Text" Name="eingabe">
              muß
              <input type="Text" Name="Pass">
              sein.

              Das script muss über ein CGI-Bin Ordner laufen (ist bei deinem Server sicher dabei) und nimm bitte das Script aus dem Threat etwas weiter oben (Hab den Fehler gefunden) da ist ein Fehler behoben.

              Wir werden das ja wohl noch hinbekommen :)

              Viele Grüße
              Torwächter

              1. Danke erst einmal funktioniert allerdings immer noch nicht. Hab gerade allerdings ein
                anderes Programm noch gefunden, wo man ein Passwort verwenden muss. Hab bei diesem programm allerdings festgestellt, das man das
                Passwort in der eingabe sieht und dann auch in der eingabeleiste. Das ist nicht so gut.
                Habe jetzt auch im Internet htaccess gefunden, dort kann man einzelne Seiten mit einem Passwort sperren. Das soll wohl sicherer sein.
                Danke erst einmal trotzdem hab mir mal deine Mail aufgeschrieben und werd die dann zu gegebener zeit mal mailen, vielleicht hab ich das dann
                doch hinbekommen. Irgendwie muss das ja funktionieren.

                Danke nochmal
                Walter Haus

                1. Hallo Walter,
                  Gern geschehen.

                  Werde das Script nach der Arbeit auch nocheinmal local testen.

                  Viele Grüße
                  Torwächter

                  Achja, du solltest dich erst bei deinem Provider erkundigen, ob er htacces zuläßt (ist nicht oft der Fall) sonst machst du dir die ganze Arbeit umsonst.

      2. Hallo Walter,
        Ich denke ich hab den Fehler gefunden, es fehlte einmal ";
        Das mit "Seite wurde nicht gefunden" liegt daran, dass du vielleicht pass.cgi aufrufst, aber das script pass.pl heist, oder der Link falsch ist ODER: Du hast das Script nicht angepasst:

        #Dein Passwort:
        $passwort = "Pass";

        #Bei richtiger Eingabe zu dieser Url:
        $site = "http://www.deine-seite.de";

        #Was tun bei falscher eingabe ?
        #Wenn interne Fehlerseite angezeigt werden soll:
        $intern = "yes";

        #bei $intern = "no"; zu dieser Url:
        $wrong = "http://www.deine-fehlerseite.de";

        pass.pl:
        -----------------------------(Diese Zeile nicht eintragen)

        #!/usr/bin/perl -w

        #Wenn du dieses Script benutzt, würde ich mich über einen Link auf
        #www.manga-zone.com freuen.
        #Hier deine Daten:

        #Dein Passwort:
        $passwort = "Pass";

        #Bei richtiger Eingabe zu dieser Url:
        $site = "http://www.deine-seite.de";

        #Was tun bei falscher eingabe ?
        #Wenn interne Fehlerseite angezeigt werden soll:
        $intern = "yes";

        #bei $intern = "no"; zu dieser Url:
        $wrong = "http://www.deine-fehlerseite.de";

        ################# Well Done ################
        ############################################
        ############################################

        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
        @pairs = split(/&/, $buffer);
        foreach $pair (@pairs) {
                ($name, $value) = split(/=/, $pair);
                $value =~ tr/+/ /;
                $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                $value =~ s/<([^>]|\n)*>//g;
                $value =~ s/<//g;
                $value =~ s/>//g;
                $FORM{$name} = $value;
        }

        if ($FORM{'Pass'} eq $passwort)
        {
        print "location: $site";
        exit;
        }
        else
        {
          if {$intern eq "yes")
          {
            print "Content-type: text/html\n\n";
            print "Der Zugriff wurde verweigert, da das Passwort falsch war.";
            exit;
          }
          else
          {
            print "location: $wrong";
            exit;
          }
        }

        -----------------------------(Diese Zeile nicht eintragen)

        Viele Grüße
        Torwächter