Ankündigung

Einklappen
Keine Ankündigung bisher.

Meine Passwortabfrage

Einklappen

Neue Werbung 2019

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

  • Meine Passwortabfrage

    Servus ich hoffe, ihr seid mit den Weihnachtsgeschenken zufrieden, die ihr bekommen habt.

    Nun, ich baue gerade an einer Passwortabfrage (etwas stümperhaft, ich weiß) herum.

    Aber Schritt für Schritt lerne ich mehr.

    So sieht meine Auswertedatei aus:

    PHP-Code:
    <?
    //Unterdrückung der Fehler mit @ - Zeichen          
    @phpinfo(TEST);          
    //Fehleranzeige          
    error_reporting(E_ALL);
    if(empty($_POST['passzahl']))
    //Fehlermeldung ausgegeben.

    echo "<br><br>Die Passworteingabe ist leer oder falsch oder das Passwort ist abgelaufen.\r";
    echo "Bitte gehen Sie <a href=\"javascript:history.back();\"><strong>zur&uuml;ck</strong></a>";
    exit;



    $fp = fopen("../doc/txt/passworddatei.txt","r"); 

    while($daten=fgetcsv($fp, 1000, "|"))
    {
    //$nickname=$daten[0];
    $passwort=$daten[0];
    }

    if ($passwort !== $passzahl)

    echo "<br><br>Die Passworteingabe ist leer oder falsch oder das Passwort ist abgelaufen.\r";
    echo "Bitte gehen Sie <a href=\"javascript:history.back();\"><strong>zur&uuml;ck</strong></a>";
    exit;
    }
    else 

    //vor dem header keine HTML-CODES oder echo "Das passt!"
    header('Location: http://www.meine-domain.de/dat/p1.php');
    fclose($fp);
    exit;
    }
    ?>
    Das funktioniert prima.

    Nun, möchte ich einen zweiten "Account" anlegen, ich kann zwar in die passworddatei.txt alles mögliche eintragen, aber ich lese da nix aus.

    Auch möchte ich, dass der zweite "Account" an eine andere Zieldatei geleitet wird.

    Wie stelle ich das am geschicktesten an?

    Wer schubbst?

    lg

    Klaus

  • #2
    Weshalb arbeitest du nicht mit einer MySQL-Datenbank wenn ich Fragen darf? Dies erleichtert dir wie auch dem Server die Arbeit. =] Wie man eine Anbindung an MySQL mit PHP macht findest du überall.

    Kommentar


    • #3
      Um aber zu deinem Problem zu kommen:
      Wenn du für jeden Benutzer eine andere Zieladresse haben willst musst du diese am besten in der txt-Datei auch noch gleich einschreiben. Aber ich würde dir echt ans Herz legen mit einer DB zu arbeiten, mit TXT-Files kommst du eigentlich nie weit. =]

      Kommentar


      • #4
        Servus und danke für deine schnelle Antwort.

        Ich taste mich erstmal ganz langsam in die Materie heran, das ist noch ziemliches Neuland für mich.

        Mit einer Datenbank bin ich (noch) heillos überfordert.

        Wenn du für jeden Benutzer eine andere Zieladresse haben willst musst du diese am besten in der txt-Datei auch noch gleich einschreiben.
        Wie soll denn das aussehen?

        lg

        Klaus

        Kommentar


        • #5
          Naja im Endeffekt muss dein PHP-Script zwei Schritte haben:

          1) Rausfinden wo die Passwörter stehen
          2) Diese Passwörter holen und prüfen

          Wie du das anstellst ist eigentlich der Fantasie überlassen.
          Du kannst z.b. eine Haupt-Textdatei machen in der du z.b. reinschreibst
          Code:
          user1
          user2
          user3
          und dann für jeden user eine textdatei, also eine user1.txt, user2.txt, user3.txt und in diese textdatei das passwort

          Ich persönlich würde sowas machen wie
          Passwort.txt
          Code:
          user1:passwort1
          user2:passwort2
          user3:passwort3
          und dann halt eben jede zeile durchgehen und schaun ob der eingegebene benutzer und das passwort zusammenpassen.

          Datenbank ist zwar im Endeffekt toll, aber bevor du dich hinsetzt und als blutiger Anfänger auch noch SQL lernen musst machs lieber erstmal über Textdateien, das ist schon recht so ^^ Spätestens wenn du aber wirklich eine Seite mit Registrierung/Login ins Netz stellen willst solltest du auf Datenbanken zurückgreifen.

          mfg

          Kommentar


          • #6
            Servus und danke für dein Posting.

            Nun, ich werde wirklich im Moment noch fleißig üben und mir die Aufgabe mit der Datenbank noch aufsparen.

            Ich vermeide auch im Moment mehrere User zu haben, so dass ich nur verschiedene Passwörter auswerten muss.

            Aber das gelingt mir schon mal nicht.



            Wie muss ich denn mein skript umschreiben?

            PHP-Code:
            $fp fopen("../doc/txt/passworddatei.txt","r"); 

            while(
            $daten=fgetcsv($fp1000"|"))
            {
            $passwort=$daten[0];


            etwa so:
            PHP-Code:
            $fp fopen("../doc/txt/passworddatei.txt","r"); 

            while(
            $daten=fgets($fp1000","))
            {
            $passwort=$daten;


            ???????????

            Was sollen eigentlich die 1000 in der while-zeile bedeuten?

            lg

            Klaus

            Kommentar


            • #7
              Zitat von klaussturm Beitrag anzeigen
              Servus und danke für dein Posting.

              Nun, ich werde wirklich im Moment noch fleißig üben und mir die Aufgabe mit der Datenbank noch aufsparen.

              Ich vermeide auch im Moment mehrere User zu haben, so dass ich nur verschiedene Passwörter auswerten muss.

              Aber das gelingt mir schon mal nicht.



              Wie muss ich denn mein skript umschreiben?

              PHP-Code:
              $fp fopen("../doc/txt/passworddatei.txt","r"); 

              while(
              $daten=fgetcsv($fp1000"|"))
              {
              $passwort=$daten[0];


              etwa so:
              PHP-Code:
              $fp fopen("../doc/txt/passworddatei.txt","r"); 

              while(
              $daten=fgets($fp1000","))
              {
              $passwort=$daten;


              ???????????

              Was sollen eigentlich die 1000 in der while-zeile bedeuten?

              lg

              Klaus
              Du solltest keine Funktionen und/oder Parameter kopieren ohne nachzuschauen was es macht
              PHP: fgetcsv - Manual
              Da steht was die 1000 bedeutet
              nichtsdestoweniger würde ich auf fopen() verzichten und die datei mit
              file()
              laden. Dann bekommst du ein Array bei dem jeder Eintrag einer Zeile entspricht.
              Wenn du dann eine Datei erstellst in der jede Zeile einem Passwort entspricht geht das eigentlich ganz einfach.

              Also nochmal was ich machen würde:
              Datei bei der jede Zeile ein Passwort ist
              Dann die Datei per file() in ein Array holen
              Mit foreach() jeden Eintrag aus dem Array durchgehen und schauen ob einer der Einträge dem eingegebenen Passwort entspricht.

              mfg

              Kommentar


              • #8
                Zitat von BlackWolf Beitrag anzeigen
                Du solltest keine Funktionen und/oder Parameter kopieren ohne nachzuschauen was es macht
                PHP: fgetcsv - Manual
                Da steht was die 1000 bedeutet
                Servus, ja das stimmt.

                Ich muss aber sagen, dass die Dokumentation sehr schwer zu verstehen ist - ich bin aber froh, dass es eine gibt.



                nichtsdestoweniger würde ich auf fopen() verzichten und die datei mit file() laden. Dann bekommst du ein Array bei dem jeder Eintrag einer Zeile entspricht.
                Wenn du dann eine Datei erstellst in der jede Zeile einem Passwort entspricht geht das eigentlich ganz einfach.
                Also nochmal was ich machen würde:
                Datei bei der jede Zeile ein Passwort ist
                Dann die Datei per file() in ein Array holen

                Mit foreach() jeden Eintrag aus dem Array durchgehen und schauen ob einer der Einträge dem eingegebenen Passwort entspricht.
                Hmm, eine gute Idee, die ich mal erst ausbrüten muss.

                Danke erstmal!


                lg
                Klaus

                Kommentar


                • #9
                  Servus!
                  PHP-Code:
                  <?
                  <?
                  //Fehleranzeige          
                  error_reporting(E_ALL);
                  include ( "../doc/txt/#passworddatei.php");
                  if (empty($_POST['passzahl']))

                  echo "<br>Die Passworteingabe ist leer";
                  echo "<br>Bitte gehen Sie <a href=\"javascript:history.back();\"><strong>zur&uuml;ck</strong></a>";
                  exit;
                  }
                  if ($passzahl == $passwort1)
                      {
                      include ('p1.php');
                      exit;
                      }
                  if ($passzahl == $passwort2)
                      {
                      include ('p2.php');
                      exit;
                      }
                  if ($passzahl == $passwort3)
                      {
                      include ('p3.php');
                      exit;
                      }
                  if ($passzahl == $passwort4)
                      {
                      include ('p4.php');
                      exit;
                      }
                  if ($passzahl == $passwort5)
                      {
                      include ('p5.php');
                      exit;
                      }
                  else 
                      {
                      print "<br><br>Die Passworteingabe falsch oder abgelaufen.\r";
                      print "Bitte gehen Sie <a href=\"javascript:history.back();\"><strong>zur&uuml;ck</strong></a>";
                      exit;
                      }
                  ?>
                  Jetzt habe ich ganz was anderes gemacht (siehe oben)

                  Jetzt habe ich zwar noch viele if-Abfragen aber auch viele verschiedene Ziele.

                  Funktionieren tut das auch, elegant geht sicher anders.
                  Aber solang ich diese array-Geschichte noch nicht gefressen habe, muss es eben so gehen.



                  lg

                  Klaus

                  Kommentar


                  • #10
                    Das kannst Du wenigstens zu
                    PHP-Code:
                    <?php  
                    error_reporting
                    (E_ALL); ini_set('display_errors'1);

                    // require "../doc/txt/#passworddatei.php";
                    // liefert:
                    $passwords = array(
                      
                    '12345' => 'p1.php',
                      
                    '4711' => 'p2.php',
                      
                    '1984' => 'p3.php'
                    );
                      
                    if (empty(
                    $_POST['passzahl']))

                      echo 
                    "<br>Die Passworteingabe ist leer";
                      echo 
                    "<br>Bitte gehen Sie <a href=\"javascript:history.back();\"><strong>zur&uuml;ck</strong></a>";
                      exit;
                    }

                    if ( isset(
                    $passwords[$_POST['passzahl']]) ) {
                      include 
                    $passwords[$_POST['passzahl']];
                    }
                    else {
                      print 
                    "<br><br>Die Passworteingabe falsch oder abgelaufen.\r";
                      exit;
                    }
                    verkürzen.

                    Kommentar


                    • #11
                      Servus und guten Morgen,

                      Zitat von David Beitrag anzeigen
                      Das kannst Du wenigstens zu
                      PHP-Code:
                      <?php  
                      error_reporting
                      (E_ALL); ini_set('display_errors'1);

                      // require "../doc/txt/#passworddatei.php";
                      // liefert:
                      $passwords = array(
                        
                      '12345' => 'p1.php',
                        
                      '4711' => 'p2.php',
                        
                      '1984' => 'p3.php'
                      );

                      .
                      .
                      .
                      Prima, jetzt habe ich ein array, das ich mal ausprobieren kann.

                      Deine Methode hat nur den Nachteil, dass ich Änderungen an den Passwörtern in dem Skript machen musss und nicht in einer Datei.

                      Aber egal, ist ja eh nur zum Lernen gedacht.

                      .
                      .
                      .
                      .
                      PHP-Code:
                      if ( isset($passwords[$_POST['passzahl']]) ) {
                        include 
                      $passwords[$_POST['passzahl']];

                      Nun, das habe ich noch nicht gefressen, das muss ich erstmal nachlesen und verstehen.

                      Danke erstmal!



                      lg

                      Klaus

                      Kommentar


                      • #12
                        Zitat von klaussturm Beitrag anzeigen
                        Deine Methode hat nur den Nachteil, dass ich Änderungen an den Passwörtern in dem Skript machen musss und nicht in einer Datei.
                        Nein. Deshalb halte ich Codekommentare für meistens überflüssig; es liest sie eh niemand
                        // require "../doc/txt/#passworddatei.php";
                        // liefert:

                        Und zu isset($passwords[$_POST['passzahl']]):
                        PHP-Code:
                        <?php
                        $x 
                        'bar';
                        if ( isset(
                        $x) ) {
                          echo 
                        $x;
                        }

                        $x = array('foo'=>'bar');
                        if ( isset(
                        $x['foo']) ) {
                          echo 
                        $x['foo'];
                        }

                        $x = array('foo'=>'bar');
                        $y 'foo';
                        if ( isset(
                        $x[$y]) ) {
                          echo 
                        $x[$y];
                        }

                        $x = array('foo'=>'bar');
                        $y = array('index'=>'foo');
                        if ( isset(
                        $x[$y['index']]) ) {
                          echo 
                        $x[$y['index']];
                        }
                        Ganz langsam von oben nach unten durcharbeiten.

                        Kommentar


                        • #13
                          Servus und danke für deine Rückmeldung.



                          Eigenartig ist nur das was du schreibst.

                          Nein. Deshalb halte ich Codekommentare für meistens überflüssig; es liest sie eh niemand

                          Sorry, aber das verstehe ich nicht - lesen kann ich es sehr wohl.

                          lg

                          Klaus

                          Kommentar


                          • #14
                            PHP-Code:
                            <?php // Datei: ../doc/txt/#passworddatei.php
                            $passwords = array(
                              
                            '12345' => 'p1.php',
                              
                            '4711' => 'p2.php',
                              
                            '1984' => 'p3.php'
                            );
                            PHP-Code:
                            require "../doc/txt/#passworddatei.php";
                            if (empty(
                            $_POST['passzahl']))

                            ... 

                            Kommentar


                            • #15
                              Servus,

                              erklärende Worte sind dir anscheinend zu mühsam?

                              lg

                              Klaus

                              Kommentar

                              Lädt...
                              X