Ankündigung

Einklappen
Keine Ankündigung bisher.

Textdatei in Array Schreiben

Einklappen

Neue Werbung 2019

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

  • Textdatei in Array Schreiben

    Guten Tag,

    zuerst möchte ich einmal sagen,
    dass ich es klasse finde, dass es Anfängern
    durch euch leichter gemacht wird - Vielen Dank!

    Nun zu meinem Problem:
    Ich möchte ein kleines "Spiel" erstellen.
    Dazu muss ich eine Textdatei (w.txt) in ein Array Einlesen.


    Der Code zum Einlesen sieht folgendermaßen aus:
    Code:
    <?php
    // Unsere Zeichen in einem Array
    
    $handle = fopen ("w.txt", "r");
    while (!feof($handle)) 
    {
        $buffer = fgets($handle, 4096);
        echo $buffer;
        
    }
    fclose ($handle);
    
    ?>
    Leider liest er es aber in einen String ein.
    Die wollte ich ungf. so abändern:

    Code:
    <?php
    // Unsere Zeichen in einem Array
    
    $handle = fopen ("w.txt", "r");
    $i=0;                          //NEU
    while (!feof($handle)) 
    {
        $buffer[$i] = fgets($handle, 4096); //NEU
        echo $buffer[$i];          //NEU
        $i++;                      //NEU
    }
    fclose ($handle);
    
    ?>
    Dies hat glücklicherweise auch funktioniert.


    Nun möchte ich diesen Code in mein "Spiel" einbinden:
    Code:
    <?php
    // Unsere Zeichen in einem Array
    
    $handle = fopen ("w.txt", "r");
    $i=0;                          //NEU
    while (!feof($handle)) 
    {
        $data[$i] = fgets($handle, 4096); //NEU
        $i++;                      //NEU
    }
    fclose ($handle);
    
    
    
    Header ("Content-type: image/png");
    
    // Laden der Rohdatei, die sich im Verzeichnis befinden muss
    $bild = ImageCreateFromPNG ("captcha.png");
    
    // Farben definieren
    $farbe_w = ImageColorAllocate ($bild, 600, 600, 600);
    $farbe_b = ImageColorAllocate ($bild, 0, 0, 0);
    
    // die verwendete Schrift-Datei arial.ttf muss vorhanden sein
    // Aufbau Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt
    ImageTTFarray ($bild, 32, 0, 50, 50, $farbe_b, "arial.ttf", $data[0]);
    ImageTTFarray ($bild, 32,0, 100, 50, $farbe_b, "arial.ttf", $data[1]);
    ImageTTFarray ($bild, 32,0, 150, 50, $farbe_b, "arial.ttf", $data[2]);
    ImageTTFarray ($bild, 32,0, 200, 50, $farbe_b, "arial.ttf", $data[3]);
    ImageTTFarray ($bild, 32,0, 250, 50, $farbe_b, "arial.ttf", $data[4]);
    ImageTTFarray ($bild, 32,0, 300, 50, $farbe_b, "arial.ttf", $data[5]);
    ImageTTFarray ($bild, 32,0, 350, 50, $farbe_b, "arial.ttf", $data[6]);
    ImageTTFarray ($bild, 32,0, 400, 50, $farbe_b, "arial.ttf", $data[7]);
    ImageTTFarray ($bild, 32,0, 450, 50, $farbe_b, "arial.ttf", $data[8]);
    ImageTTFarray ($bild, 32,0, 500, 50, $farbe_b, "arial.ttf", $data[9]);
    
    // Ausgabe im Format PNG
    ImagePng     ($bild);
    
    // Resourcen wieder freigeben
    ImageDestroy ($bild);
    ?>
    Doch leider bekomme ich folgende Fehlermeldung:
    Code:
    Die Grafik "..." kann nicht angezeigt werden, weil sie Fehler enthält.
    Meineserachtens liegt dies an der Tatsache, das "data[$i]" ganze Wörter,
    statt nur eines Buchstabens enthält.
    Kann jmd. meine Aussage bestätigen, oder meinen Fehler korrigieren?
    Falls dies wirklich mein Fehler ist - wie bekomme ich ihn gelöst?

    Vielen Dank schonmal


    MfG
    Hoamer

    PS: Bitte nicht zu schwierig machen, bin nicht der fitteste

  • #2
    Was ist ImageTTFArray für eine Funktion?

    Nimm mal das header() und das imagepng() raus und schau dir die Ausgabe an - dann siehst du die Fehlermeldungen (wenn es welche gibt)....


    (statt imagettfarray() 10 mal per hand aufzurufen würde sich hier auch eine Schleife anbieten...)
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Hi

      also erstmal liest sich eine Textdatei mit der Funktion file() von alleine in ein Array

      Und jetzt frag ich mich woher hast du die Funktion imageTTFarray ? Auf php.net finde ich die nicht?

      Gruß
      CyCap

      Kommentar


      • #4
        Das "ImageTTFArray" ist das Schreiben der Buchstaben in das Bild (Captcha).

        Wie du (cycap) schon richtig angenommen hast, habe ich mir die Funtkion von einer Website als Vorlage genommen - Aber woher...da habe ich leider echt keine Ahnung, sry...

        "File()" habe ich schon versucht anzuwenden, aber leider kommt bei dir da nichts vernünftiges bei heraus...

        @agrajag: Wenn ich den header() und ImagePNG() herausnehme bekomme ich folgende Fehlermeldung:

        Code:
        Fatal error:  Call to undefined function ImageTTFarray() in /usr/export/www/vhosts/funnetwork/hosting/hoamer/Schule/captcha/richtig/sdasda.php on line 25
        Hier ist zeile 25:
        PHP-Code:
        ImageTTFarray ($bild3205050$farbe_b"arial.ttf"$data[0]); 
        Also der erste "Einlesevorgang"...

        Habt schonmal vielen Dank


        MfG
        Hoamer

        Kommentar


        • #5
          Dann hat sich die ImageTTFarray wohl jemand selber geschrieben, die Fehlermeldung ist ja eindeutig, er kennt die Funktion nicht.

          Guckst du hier:
          PHP: imagettftext - Manual
          Und wo lag denn dein Problem mit file() ?
          PHP: file - Manual

          Kommentar


          • #6
            Okay, ich werde mir es (zum hunderttausendsten mal) nochmals durchlesen.

            Aber selbstverständlich habe ich ImageTTF... getestet. Es hat funktioniert.

            Aber kannst du mir nicht sagen, ob die Fehlermeldung daran liegt, ob nun nur ein Buchstabe, oder direkt ein ganzes Wort ausgegeben werden soll?

            Kommentar


            • #7
              Die Fehlermeldung hat rein garnichts mit Buchstaben oder Wörtern zu tun. Wie schon gesagt die Fehlermeldung sagt eindeutig das er die Funktion ImageTTFarray überhaupt nicht kennt. Ob du ner Funktion die er nicht kennt nun nen Wort, nen Buchstaben oder sonstwas übergibst macht dann auch nichts mehr.

              Kommentar


              • #8
                Ahjo, da hast du allerdings Recht^^

                Na gut, ich beschäftige mich mal etwas weiter damit.
                Habt vielen Dank für eure Hilfe


                MfG
                Hoamer


                Edit:
                So, nun habe ich es endlich hinbekommen.
                Er zeigt mir die Wörter an.
                Nun möchte ich, dass die User in einem textfeld das eingeben können, was sie sehen.
                Der vergleich von Strings, bzw. Arrays sollte kein Problem darstellen.
                Doch wenn ich einfach:
                Code:
                
                              <body>
                              <form action="ausgabe.php" method="post">
                              Geben Sie ein, was sie sehen...
                              <input type="text" name="email">
                              <input type="submit" value="Go! ">
                              </form>
                              </body>
                
                unter

                Code:
                <?php
                
                
                // Unsere Zeichen in einem Array
                
                $zufallszahl = rand(1,6);
                
                $handle = fopen ("w.txt", "r");
                $i=0;                          //NEU
                while (!feof($handle)) 
                {
                    $data[$i] = fgets($handle, 4096); //NEU
                    $i++;                      //NEU
                }
                fclose ($handle);
                
                
                
                Header ("Content-type: image/png");
                
                // Laden der Rohdatei, die sich im Verzeichnis befinden muss
                $bild = ImageCreateFromPNG ("captcha.png");
                
                // Farben definieren
                $farbe_w = ImageColorAllocate ($bild, 600, 600, 600);
                $farbe_b = ImageColorAllocate ($bild, 0, 0, 0);
                
                // die verwendete Schrift-Datei arial.ttf muss vorhanden sein
                // Aufbau Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt
                ImageTTFText ($bild, 50, 00, 50,  50, $farbe_b, "arial.ttf", $data[$zufallszahl]);
                
                
                
                // Ausgabe im Format PNG
                ImagePng     ($bild);
                
                // Resourcen wieder freigeben
                ImageDestroy ($bild);
                ?>
                setze bekomme ich alles so angezeigt wie vorher - Undzwar sehe ich das Bild...(der Code für Die Eingabe funzt, habe ihn in einer seperaten Datei getestet...)

                Würde mich freuen, wenn mir wieder jmd. helfen könnte..ach ja, bitte verzeiht mir Fehler...wie gesagt, bin nicht der fitteste

                Kommentar


                • #9
                  So, nun habe ich es endlich hinbekommen.
                  Er zeigt mir die Wörter an.
                  Nun möchte ich, dass die User in einem textfeld das eingeben können, was sie sehen.
                  Der vergleich von Strings, bzw. Arrays sollte kein Problem darstellen.
                  Doch wenn ich einfach:
                  Code:
                  
                                <body>
                                <form action=&quot;ausgabe.php&quot; method=&quot;post&quot;>
                                Geben Sie ein, was sie sehen...
                                <input type=&quot;text&quot; name=&quot;email&quot;>
                                <input type=&quot;submit&quot; value=&quot;Go! &quot;>
                                </form>
                                </body>
                  
                  unter

                  Code:
                  <?php
                  
                  
                  // Unsere Zeichen in einem Array
                  
                  $zufallszahl = rand(1,6);
                  
                  $handle = fopen (&quot;w.txt&quot;, &quot;r&quot;);
                  $i=0;                          //NEU
                  while (!feof($handle)) 
                  {
                      $data[$i] = fgets($handle, 4096); //NEU
                      $i++;                      //NEU
                  }
                  fclose ($handle);
                  
                  
                  
                  Header (&quot;Content-type: image/png&quot;);
                  
                  // Laden der Rohdatei, die sich im Verzeichnis befinden muss
                  $bild = ImageCreateFromPNG (&quot;captcha.png&quot;);
                  
                  // Farben definieren
                  $farbe_w = ImageColorAllocate ($bild, 600, 600, 600);
                  $farbe_b = ImageColorAllocate ($bild, 0, 0, 0);
                  
                  // die verwendete Schrift-Datei arial.ttf muss vorhanden sein
                  // Aufbau Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt
                  ImageTTFText ($bild, 50, 00, 50,  50, $farbe_b, &quot;arial.ttf&quot;, $data[$zufallszahl]);
                  
                  
                  
                  // Ausgabe im Format PNG
                  ImagePng     ($bild);
                  
                  // Resourcen wieder freigeben
                  ImageDestroy ($bild);
                  ?>
                  setze bekomme ich alles so angezeigt wie vorher - Undzwar sehe ich das Bild...(der Code für Die Eingabe funzt, habe ihn in einer seperaten Datei getestet...)

                  Würde mich freuen, wenn mir wieder jmd. helfen könnte..ach ja, bitte verzeiht mir Fehler...wie gesagt, bin nicht der fitteste

                  Kommentar


                  • #10
                    Hallo,

                    das Problem ist, dass du nicht verstanden hast was imagepng() macht bzw. die Abläufe wohl nicht ganz verinnerlicht hast.

                    Das was du momentan versuchst ist zu vergleichen mit folgendem:
                    Öffne mal eine beliebige .png-Datei auf deinem Computer mit dem Editor (notepad.exe) und dann schreib da HTML-Kram rein. Natürlich geht das nicht.

                    Du musst die Bilderzeugung/ausgabe und das Formular trennen und dann das Bild im Formular ganz normal über <img src="datei_die_das_bild_erzeugt.php" alt="" /> einbinden...
                    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                    Kommentar


                    • #11
                      Okay, also diesen Aufbau, dass ich die Erstellung des Bildes und den restlichen Kram trennen muss (dachte habe das getrennt) habe ich verstanden. - Danke für dein Beispiel. Doch wie Trenne ich nun die Erstellung des Bildes und das Formular?

                      Kommentar


                      • #12
                        Wie ich schon gesagt habe: Belasse deine ursprüngliche PHP-Datei die das Bild erstellt und ausgibt wie sie ist. Diese Datei bzw. das Bild das sie erzeugt kannst du dann ganz normal auf jeder anderen Seite über den HTML-Tag <img src="die_datei.php" /> anzeigen....

                        Wenn das ein Captcha werden soll verstehe ich sowieso nicht was du da noch groß aus deiner w.txt-datei ausliest...
                        Sorry, aber ich habe jetzt keine große Lust dir jetzt haarklein zu erklären wie man ein Captcha basteln kann.
                        Die Kurzform, wie man's machen kann:

                        Es gibt eine PHP-Datei die für das erstellen des Captcha-Bildes zuständig ist. In dieser Datei erzeugst du einen zufälligen String "malst" ihn auf das Bild und speicherst ihn in der Session (damit du ihn später noch kennst).

                        In deinem Formular bindest du diese Grafik/PHP-datei über <img src="captcha.php" .../> ein. Nachdem das Formular abgeschickt wurde musst du nur noch den Code aus der Session mit dem im Formular eingegebenen Code vergleichen....
                        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                        Kommentar


                        • #13
                          Das erstellen des captchas habe ich ja schon abgeschlossen. (Trotdzem danke ) Nun ging es mir einzig und allein darum, die benutzereingabe zu erstellen. Doch die Frage &quot;Wie speichere ich in einer Session ein Array, wenn ich in der PHP-Datei nichts ändern darf, da ich sonst wärend der Erstellung des Bildes an der datei herumfrickel und daraus Fehler erzeugt werden?&quot; ( ) stellt sich mir nun. Wenn ich nun auf die nächste Seite gehen würde und das Array für diese Session nicht gespeichert hätte wäre dieses ja verloren... (Zweite Frage: Wie soll ich denn ein Butten (zur Weiterleitung für die Usereingaben) Erstellen, wenn ich nichtsmehr an dem &quot;Captcha-Code&quot; rumfrickeln darf?)

                          Kommentar


                          • #14
                            Zitat von hoamer Beitrag anzeigen
                            Das erstellen des captchas habe ich ja schon abgeschlossen. (Trotdzem danke )
                            Nein hast du nicht. Du hast ein Bild erzeugt - das ist nur die halbe Miete.

                            Nun ging es mir einzig und allein darum, die benutzereingabe zu erstellen.
                            Dann mach das doch....

                            Doch die Frage &quot;Wie speichere ich in einer Session ein Array, wenn ich in der PHP-Datei nichts ändern darf, da ich sonst wärend der Erstellung des Bildes an der datei herumfrickel und daraus Fehler erzeugt werden?&quot; ( ) stellt sich mir nun.
                            Du darfst lediglich nichts ausgeben, ansonsten kannst du dort machen was du willst. Also natürlich auch Daten in eine Session-Variable schreiben.

                            Wenn ich nun auf die nächste Seite gehen würde und das Array für diese Session nicht gespeichert hätte wäre dieses ja verloren... (Zweite Frage: Wie soll ich denn ein Butten (zur Weiterleitung für die Usereingaben) Erstellen, wenn ich nichtsmehr an dem &quot;Captcha-Code&quot; rumfrickeln darf?)
                            Versteh ich nicht!?
                            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                            Kommentar


                            • #15
                              Okay, das ist sehr schön, vielen Dank bis hier hin
                              Zitat: Wenn ich nun auf die nächste Seite gehen würde und das Array für diese Session nicht gespeichert hätte wäre dieses ja verloren... (Zweite Frage: Wie soll ich denn ein Butten (zur Weiterleitung für die Usereingaben) Erstellen, wenn ich nichtsmehr an dem &quot;Captcha-Code&quot; rumfrickeln darf?) Versteh ich nicht!?
                              Das musst du nicht verstehen, schon erledigt^^ _________ Habe nun folgendes gemacht: $zufll = $HTTP_GET_VARS[$zufallszahl]; In meine &quot;Captcha.php&quot; geschrieben, sodass die Variablen übergeben werden. $zufll = $HTTP_POST_VARS[$zufallszahl]; In meine Usereingabe. Doch leider klappt das nicht...warum? Edit: Irgendwie werden bei mir die Umbrüche nicht sichtbar...komisch...

                              Kommentar

                              Lädt...
                              X