Login-Abfrage über txt-Datei

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

  • #16
    Schau, du möchtest was und nicht ich. Wenn du dich weigerst eine vernünftige Fehlerbeschreibung zu liefern, dann lassen wir es einfach bleiben. Ich hab kein Problem damit.

    Kommentar


    • #17
      Ich verstehe nur nicht, warum das von Bedeutung ist und inwiefern das mein Problem lösen könnte.
      Also ich habs jetzt mit file probiert (s.Code):
      $datei=file('benutzernamen.txt',"r") ;
      while (!feof($datei)) //while sorgt dafür, dass die Datei bis zum Ende ausgelesen wird
      {
      $zeilenArray = fgets($datei);
      echo "Nutzer enthalten";
      }
      fclose($datei);

      und erhalte folgende Fehlermeldung:
      Warning: file() expects parameter 2 to be long, string given in /users/hanan/www/uebung4.php on line 136

      Warning: feof() expects parameter 1 to be resource, null given in /users/hanan/www/uebung4.php on line 137

      Warning: fgets() expects parameter 1 to be resource, null given in /users/hanan/www/uebung4.php on line 139
      Nutzer enthalten
      Warning: feof() expects parameter 1 to be resource, null given in /users/hanan/www/uebung4.php on line 137

      usw.usw.

      Kommentar


      • #18
        file() kennt keinen zweiten Parameter 'r'. Den hast du erfunden, im PHP-Handbuch steht der nicht. Siehe:

        PHP: file - Manual

        file() liefert außerdem bereits ein Array. Warum tust du dann noch mit feof(), fgets() und flocse() herum? Sowas kommt im PHP-Handbuch auch nicht vor.

        Kommentar


        • #19
          Oh darauf habe ich nicht geachtet.
          So müsste es richtig sein.

          $zeilenArray = file('benutzernamen.txt');
          foreach ($zeilenArray as $zeilenNummer => $zeile) {
          echo "Nutzer vorhanden";
          }

          Aber wie kann ich jetzt die txt auslesen und überprüfen, ob der Name nun vorhanden ist?

          Kommentar


          • #20
            Zitat von Hananananan Beitrag anzeigen
            Aber wie kann ich jetzt die txt auslesen
            Das hast du mit file() bereits getan. Wenn dir nicht klar ist, was anschließend in deiner Variablen $zeilenArray steht – dann lass es dir mittels var_dump() ausgeben.

            und überprüfen, ob der Name nun vorhanden ist?
            Da kommt dann wieder in_array ins Spiel. Eine Schleife braucht es dafür dann nicht mehr.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              Ja genau das kriege ich ja nicht hin mit dem in_array :S

              Kommentar


              • #22
                btw. danke für deine Geduld und Mühe

                Kommentar


                • #23
                  Zitat von Hananananan Beitrag anzeigen
                  Ja genau das kriege ich ja nicht hin mit dem in_array :S
                  Das ist genauso wenig eine brauchbare Problembeschreibung wie „funktioniert nicht“.

                  Zeig deinen Code, und erkläre detailiert was er machen soll.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #24
                    Alles was ich mit in_array versucht hatte, habe ich wieder verworfen, weil es nicht geklappt hat. Daher brauche ich einen neuen Ansatz. Mein Skript kannst du ja dem Thread entnehmen. Also ich weiß nicht, wie in mithilfe von in_array überprüfen kann, ob der eingetragene Benutzername in der txt-Datei vorhanden ist oder nicht. Das möchte ich dementsprechend ausgeben (mit true/false).

                    Kommentar


                    • #25
                      Zitat von Hananananan Beitrag anzeigen
                      Also ich weiß nicht, wie in mithilfe von in_array überprüfen kann, ob der eingetragene Benutzername in der txt-Datei vorhanden ist oder nicht.
                      So, wie bereits erklärt wurde:

                      - Textdatei mittels file() in Array einlesen
                      - mit var_dump kontrollieren(!), ob die Daten auch tatsächlich so vorliegen, wie du annimmst (genau ein Benutzername pro Array-Eintrag)
                      - wenn ja, einfach in_array anwenden, dann hast du dein Ergebnis in Form von true oder false
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #26
                        Hi,
                        also ich habe jetzt folgendes Skript:
                        <html>
                        <body>
                        <form action="test.php" method="post" name="form1">
                        Dein User-Name:<br>
                        <input type="text" size="24" maxlength="50" name="username" value=""> <br><br>


                        <input type="submit" value="Registieren">
                        </form>




                        <?php
                        if(isset($_POST['username'])) $username = $_POST['username']; else $username="";

                        $user_vorhanden = array();

                        $userdatei = fopen ("benutzernamen.txt","r");
                        while (!feof($userdatei))
                        {
                        $zeile = fgets($userdatei,500);
                        $userdata = explode("|", $zeile);
                        array_push ($user_vorhanden,$userdata[0]);
                        }
                        fclose($userdatei);

                        if (in_array($username,$user_vorhanden))
                        {
                        echo "Username schon vorhanden";
                        }

                        else
                        {
                        $userdatei = fopen ("benutzernamen.txt","a");
                        fwrite($userdatei, $username);
                        fwrite($userdatei, "|");
                        fwrite($userdatei, "\n");
                        fclose($userdatei);
                        echo "$username, deine Anmeldung war erfolgreich";
                        }







                        $zeilenArray = file('benutzernamen.txt');

                        //Ausgeben des Arrays mit einer foreach Schleife
                        foreach ($zeilenArray as $zeilenNummer => $zeile) {
                        echo "<br>Benutzer: <b>".$zeilenNummer."</b> : " . $zeile . "\n";

                        }
                        ?>


                        Die Ausgabe sieht dann ungefähr so aus
                        hans|
                        peter|

                        Wie kriege ich dieses Zeichen "|" da weg. Hab schon alles versucht, es hängt wohl mit explode zusammen. Wenn ich es ändere funktioniert das Skript nicht mehr. Sprich, es wird immer ein neuer Name gespeichert, obwohl er schon vorhanden ist.

                        Kommentar


                        • #27
                          Warum schreibst du das Zeichen "|" überhaupt rein?

                          Kommentar


                          • #28
                            Um ehrlich zu sein habe ich das Skript im Internet gefunden und etwas angepasst und verändert. Als ich versucht habe dieses Zeichen weg zumachen, hat das Skript nicht mehr richtig funktioniert. Also, wie ich schon gesagt habe, der Fehler ist, dass der eingetragene Nutzername immer wieder neu eingetragen wird, obwohl der gleiche schon vorhanden ist. Außerdem werden durch explode unnötige Leerzeichen entfernt, die wieder erscheinen, wenn ich die Funktion ändere.

                            Kommentar


                            • #29
                              Kopiere keinen Code, den du nicht verstehst.

                              Außerdem denke ich, dass der Sinn der Übung daran liegt, dass du es selber schreibst und nicht fremden Code kopierst.

                              Kommentar


                              • #30
                                $userdata = explode("|", $zeile);
                                array_push ($user_vorhanden,$userdata[0]);
                                }



                                fwrite($userdatei, "|");

                                Ich verstehe zwar was es macht, ich weiß aber nicht, wie ich | das Zeichen in der Ausgabe wegbekomme.


                                Ich versuche den Code selbst zu schreiben und ihn zu verstehen. Aber wenn ich das nicht hinkriege und das Internet solche Skripts bietet, warum soll ich die nicht benutzen und damit weiter arbeiten .

                                Kommentar

                                Lädt...
                                X