dynamisches Bild

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

  • dynamisches Bild

    Hi,
    ich arbeite noch nicht sooo lange mit PHP und habe bisher nur kleinere sachen wie ein Newsscript oder einen Terminplaner geschrieben. Jetzt habe ich mich daran gesetzt und angefangen ein Gästebuch zu schreiben. An sich ist das ja auch nicht so schwer, aber ich komme bei der dynamischen Bilderstellung nicht weiter die ich als Botschutz einbauen möchte.

    Ich habe mir diverse Scripts im Internet und das Script was beim Apache (XAMPP) als Beispiel mit dabei ist angeschaut und ich dann daran ein wenig orientiert.

    An sich funktioniert das script so wie es hier zu sehen ist wenn es nicht in HTML eingebettet ist.

    PHP-Code:

    <html>
     <head>
      </head>
     <body>
     
     <?php
    function bild()
        {
        
        
    $breite 150;
        
    $höhe 25;
            
        
    $bild  =  ImageCreate($breite$höhe);
        
    $hintergrundfarbe ImageColorAllocate($bild0155155);
        
    $rahmen ImageColorAllocate($bild5151 0);
        
        
    $textfarbe ImageColorAllocate($bild2552550);
        
    $schriftart "./verdana.ttf";
        
    $text "test";
        
        
    header("Content-Type: image/png"); ### line 22
        
        
    imagettftext($bild1501020$textfarbe$schriftart$text);

        
    imagepng($bild);
        
    imagedestroy($bild);
    }

    echo 
    "<img src=".bild().">";

    ?>
     
     </body>
    </html>

    Wenn ich das Script jetzt aber in HTML einbinde kommt immer der Fehler:

    Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\test\bild3.php:6) in C:\Programme\xampp\htdocs\test\bild3.php on line 22
    ‰PNG  ��� IHDR���–������!ÉÊÜ���PLTE�››33�ÿÿ�ßòÍM¿æ&?´t_À`ŸÙ:§‡u ì<���¯IDATxœc`Ãáå ³˜”””Ø‚•=R, À\r‹’‹ ƒ“E«2»rG˜K6�zŠMƒÁɁY“-€âðâP``˜Àd�åRd30” XU+©`“Š‹‹‹g“’ Ü¥�a¦5Pl«:”ͤ@™YA lÊ@ÜÀ:a’ˆK>(²hfpRí02``.Ù€ÝH•_YÉ"H„A¸£`(�óñ7Ps¢T����IEND®B`‚

    Mir fällt absolut keine Lösung mehr ein obwohl ich heute Abend schon seit 5 Stunden versuche das Problem zu lösen. Darum habe ich mich auch erstmal hier im Forum registriert und hoffe das mir hier jemand mit meinem Problem helfen kann.

    Gruß
    EdMolf

  • #2
    PHP-Code:
    echo "<img src=".bild().">"
    Das ist der Fehler.

    Du musst den PHP-Quelltext für das Bild in eine externe Datei schreiben. Im HTML-Code sieht das dann so aus:

    PHP-Code:
    echo "<img src="bild.php">"

    Kommentar


    • #3
      Ich soll also den code ohne HTML speichern und dann zum Beispiel in einer index.php ausgeben lassen ?

      das ich in der index.php dann das stehen habe:

      PHP-Code:
      <html>
      <head>
      </head>

      <body>

      <?php echo "<img src='bild3.php'>"?>
      </body>
      </html>
      Weil so hab ichs gerade versucht, das funktioniert nicht =/
      Falls ich es einfach nur falsch verstanden habe, bitte nochmal einwenig ausführlicher erklären.

      EdMolf

      Kommentar


      • #4
        Original geschrieben von EdMolf
        Weil so hab ichs gerade versucht, das funktioniert nicht =/
        Falls ich es einfach nur falsch verstanden habe, bitte nochmal einwenig ausführlicher erklären.
        du könntest erstmal "das funktioniert nicht" ein wenig ausführlicher erklären.

        rufst du in deiner 'bild3.php' die funktion auch auf?

        Kommentar


        • #5
          Ich habe jetzt nochmal ein wenig rumprobiert und in meiner bild3.php steht jetzt:

          PHP-Code:

          <?php
          function bild()
                  {
                  
                  
          $breite 150;
                  
          $höhe 25;
                      
                  
          $bild  =  ImageCreate($breite$höhe);
                  
          $hintergrundfarbe imagecolorallocate($bild0155155);
                  
          $rahmen imagecolorallocate($bild5151 0);
                  
                  
          $textfarbe imagecolorallocate($bild2552550);
                  
          $schriftart "./verdana.ttf";
                  
          $text rand(0,10);
                  
                  
          header("Content-Type: image/png");
                  
                  
          imagettftext($bild1501020$textfarbe$schriftart$text);
              
                  
          imagepng($bild);
                  
                  }
                  
                  echo 
          "<img src=".bild().">";
                          
          ?>
          und in meiner index.php:

          <html>
          <head>
          </head>
          <body>
          <img src="bild3.php">
          </body>
          </html>

          so funktioniert das jetzt auch =).

          Habe jetzt nur noch ein Problem und das ist die Variable $text. Wie bekomme ich die Variable $text jetzt in die index.php und kann sie ausgeben lassen ? So das ich zum Beispiel unter dem Bild wo gerade eine fünf drauf steht als text auch die fünf aus der $text variable ausgeben kann.

          EdMolf

          Kommentar


          • #6
            so funktioniert das jetzt auch =).
            glaube ich nicht - der code ist falsch. warum produziert bild3.php irgendeinen html-code? es ist schließlich keine html datei, die du zurückgibst, sondern image/png.
            Habe jetzt nur noch ein Problem und das ist die Variable $text.
            das müsste auch andersherum funktionieren: index.php generiert eine zufällige zahl und gibt sie als parameter an bild3.php weiter:
            Code:
            <img src="bild3.php?number='.rand(0,10).'" />
            und bild3.php wiederum gibt das aus, was durch $_GET hereinkommt. (soll jetzt aber hoffentlich kein captcha sein?)

            Kommentar


            • #7
              Original geschrieben von penizillin
              und bild3.php wiederum gibt das aus, was durch $_GET hereinkommt. (soll jetzt aber hoffentlich kein captcha sein?)
              hab schon einen schreck bekommen, klar soll das ein captcha werden.
              daher würde sich eine session anbieten.

              Kommentar


              • #8
                oh, hab tatsächlich nur die letzte nachricht gelesen.. du hast natürlich recht!

                Kommentar


                • #9
                  Habe mich heute nochmal dran gesetzt und alles mit euren Tips überarbeitet. Jetzt klapt alles so wie ich es will =).

                  Hier jetzt der vollständige Code, falls ihn jemand haben möchte ^^.

                  bild.php:

                  PHP-Code:

                  <?php

                  session_start
                  ();

                  $breite 150;
                  $höhe 25;
                      
                  $bild  =  ImageCreate($breite$höhe);
                  $hintergrundfarbe imagecolorallocate($bild0155155);
                  $rahmen imagecolorallocate($bild5151 0);

                  $textfarbe imagecolorallocate($bild2552550);
                  $schriftart "./verdana.ttf";

                  $text $_SESSION["text"];


                  header("Content-Type: image/png");

                  imagettftext($bild1501320$textfarbe$schriftart$text);

                  imageline($bild00$breite 10$rahmen);
                  imageline($bild000$höhe 2$rahmen);
                  imageline($bild$breite 10$breite-1$höhe$rahmen);
                  imageline($bild0$höhe 1$breite 1$höhe 1$rahmen);

                  imagepng($bild);

                  ?>

                  index.php:

                  PHP-Code:

                  <?
                  session_start();
                  $_SESSION["text"] = "text";

                  ?>

                  <html>
                  <head>
                  </head>
                  <body>

                  <img src="bild.php">

                  </body>
                  </html>

                  Danke nochmal für eure Hilfe =)

                  EdMolf

                  Kommentar

                  Lädt...
                  X