Ankündigung

Einklappen
Keine Ankündigung bisher.

Skript läuft auf neuem Server nicht richtig :-(

Einklappen

Neue Werbung 2019

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

  • Skript läuft auf neuem Server nicht richtig :-(

    Hallo zusammen,
    bin php-Neuling und habe ein kleine Problem:
    Auf meinem alten Server hatte ich einkleines PHP-Skript, das ein lustiges Logo erstellt hat, in dem der Betrachter mit seiner Betriebssystemversion und seinem benutztem Browser begrüßt wurde ... war damals eine witzige Spielerei, aber irgendwie hing ich daran ... jetzt musste ich auf einen neuen Server wechseln und seitdem funktioniert es nicht mehr.
    Habe schon etwas rum gesucht und ausprobiert und alte php-Funktionen / Variablen durch neue ersetzt ... jetzt kommt zumindest wieder ein Bild als Ausgabe, allerdings mit dem gesamten Text in einer Zeile ...
    Bin wie gesagt absoluter PHP-Neuling und komme da nicht weiter ... kann mir jemand helfen?
    Danke im Voraus
    Martin

    PHP-Code:
      <?php header("Content-type: image/png"); // Begin Config // Bildordnerinhalt auslesen $handle=opendir('/Pfad/zu/den/Bildern/'); while ($file = readdir ($handle)) {    if ($file != "." && $file != "..") {         if(stristr($file, ".png"))                    $bilder[] = $file;         } } closedir($handle); // $bild = "bilder/" .$bilder[rand(0, count($bilder)-1)];  $spitze = "spitze.png"; $maxchars = 60; // Maximale Anzahl von Zeichen pro Zeile $f = 2; // Schriftgroesse $f2 = 1; // Schriftgroesse fuer Schrift rechts unten $text2 = ""; // Schriftzug rechts unten $c_schriftfarbe2 = array(44, 44, 44); // Schriftfarbe rechts unten $c_schriftfarbe = array(0, 0, 0); // schwarz $c_randfarbe = array(0, 0, 0); // schwarz $c_fuellfarbe = array(228, 228, 228); // weiss  $zufallstext = array( // Hier kannst du beliebig viele Zufallstexte angeben (nach der letzten Zeichenkette kein , !) "Mit dem Wissen wächst der Zweifel.", "Mit der Dummheit kämpfen Götter selbst vergebens.", "Erfahrung nennt man die Summe aller unserer Irrtümer.", "Nicht alles was hinkt ist ein Vergleich", "Wer andere in die Grube schubst, \nfällt selbst nicht rein.", "Phantasie ist wichtiger als Wissen,\ndenn Wissen ist begrenzt." ); // End Config  // Betriebssystem if (strstr($_SERVER['HTTP_USER_AGENT'], "Windows 95")) $bs = "Win95"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "Windows 98")) $bs = "Win98"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "NT 4.0")) $bs = "NT"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "NT 5.0")) $bs = "Win2k"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "NT 5.1")) $bs = "WinXP"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "Win")) $bs = "Win"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "Mac")) $bs = "Mac"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "Linux")) $bs = "Linux"; else if (strstr($_SERVER['HTTP_USER_AGENT'], "Unix")) $bs = "Unix"; else $bs = "Other";  // Browser if (preg_match("MSIE", $_SERVER['HTTP_USER_AGENT'])) { $browser = "IE"; } else if (preg_match("Opera", $_SERVER['HTTP_USER_AGENT'])) { $browser ="Opera"; } else if (preg_match("Firefox/([0-9].[0-9]{1,2})", $_SERVER['HTTP_USER_AGENT'])) { $browser = "Firefox"; } else if (preg_match("Safari/([0-9].[0-9]{1,2})", $_SERVER['HTTP_USER_AGENT'])) { $browser = "Safari"; } else if (preg_match("Mozilla/([0-9].[0-9]{1,2})", $_SERVER['HTTP_USER_AGENT'])) { $browser = "Mozilla"; } else { $browser = "einen unbekannten Browser"; }  $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); $host2 = strrev($host); $suffix = substr($host, 0, strpos($host2, ".")+1); $prov = substr($host, strlen($suffix)); $prov = substr($prov, 0, strpos($prov, ".")); $provider = strrev($suffix.$prov);  $text = "Deine IP ist " .$_SERVER['REMOTE_ADDR']. ",\ndein Host ist " .$host. ",\n" ."bei dir läuft " .$bs. " und du verwendest " .$browser. ".\n" .$zufallstext[rand(0, count($zufallstext)-1)];   $t = wordwrap($text, $maxchars, "\n"); $t = explode("\n", $t);  foreach($t as $tx) { $len[] = strlen($tx); } $l = max($len);  $tb = $l * imagefontwidth($f) + 12; $th = count($t)*imagefontheight($f) + 16;  $org = imagecreatefrompng($bild); $ow = imagesx($org); $oh = imagesy($org);  $spitze = imagecreatefrompng($spitze); $sw = imagesx($spitze); $sh = imagesy($spitze);  $im = imagecreate($tb, $th+$oh+$sh+4); $bg = imagecolorallocate($im, 245, 252, 255);  $schriftfarbe = imagecolorallocate($im, $c_schriftfarbe[0], $c_schriftfarbe[1], $c_schriftfarbe[2]); $schriftfarbe2 = imagecolorallocate($im, $c_schriftfarbe2[0], $c_schriftfarbe2[1], $c_schriftfarbe2[2]); $randfarbe = imagecolorallocate($im, $c_randfarbe[0], $c_randfarbe[1], $c_randfarbe[2]); $fuellfarbe = imagecolorallocate($im, $c_fuellfarbe[0], $c_fuellfarbe[1], $c_fuellfarbe[2]);  imagefill($im, 0, 0, $bg); imagecolortransparent($im, $bg);  imagecopy($im, $spitze, $tb/2-$sw/2, 0, 0, 0, $sw, $sh);  imagefilledrectangle($im, 0, $sh, $tb-1, $th+$sh, $randfarbe); imagefilledrectangle($im, 2, $sh+2, $tb-3, $th+$sh-2, $fuellfarbe);  imagecopy($im, $org, $tb/2-$ow/2, $th+$sh+1, 0, 0, $ow, $oh);  foreach($t as $say) { imagestring($im, $f, ($tb - strlen($say)*imagefontwidth($f))/2, $i*imagefontheight(f)*ceil(6/count($t))+$sh+2, $say, $schriftfarbe); $i++; } imagestring($im, $f2, $tb-(strlen($text2)*imagefontwidth($f2)), $th+$sh+3, $text2, $schriftfarbe2); imagepng($im); imagedestroy($im); ?>
    Angehängte Dateien

  • #2
    hallo und wilkommen im forum,
    schön, daß du die php tags endeckt hast., leider muss man hier mauell die zeilenumbrüche wieder herstellen, wäre nett

    Kommentar


    • #3
      Mal das error_reporting aktivieren (wie: Abschnitt Debugging hier in der Wissenssammlung durcharbeiten). Vermutlich kommt da ein "Headers already sent" Fehler.

      Kommentar


      • #4
        Hier nochmal der Quelltext mit Zeilenumbrüchen ... das Problem ist glaube ich "nur" noch, dass die Zeilen nicht umgebrochen werden ($t = wordwrap($text, $maxchars, "\n")

        PHP-Code:
        <?php
        header
        ("Content-type: image/png");
        // Begin Config
        // Bildordnerinhalt auslesen
        $handle=opendir('/Pfad/zu/den/Bildern/');
        while (
        $file readdir ($handle)) {
           if (
        $file != "." && $file != "..") {
               if(
        stristr($file".png"))
                          
        $bilder[] = $file;
               }
        }
        closedir($handle);
        //
        $bild "bilder/" .$bilder[rand(0count($bilder)-1)];
        $spitze "spitze.png";
        $maxchars 60// Maximale Anzahl von Zeichen pro Zeile
        $f 2// Schriftgroesse
        $f2 1// Schriftgroesse fuer Schrift rechts unten
        $text2 ""// Schriftzug rechts unten
        $c_schriftfarbe2 = array(444444); // Schriftfarbe rechts unten
        $c_schriftfarbe = array(000); // schwarz
        $c_randfarbe = array(000); // schwarz
        $c_fuellfarbe = array(228228228); // weiss

        $zufallstext = array( // Hier kannst du beliebig viele Zufallstexte angeben (nach der letzten Zeichenkette kein , !)
        "Mit dem Wissen wächst der Zweifel.",
        "Mit der Dummheit kämpfen Götter selbst vergebens.",
        "Erfahrung nennt man die Summe aller unserer Irrtümer.",
        "Nicht alles was hinkt ist ein Vergleich",
        "Wer andere in die Grube schubst, \nfällt selbst nicht rein.",
        "Phantasie ist wichtiger als Wissen,\ndenn Wissen ist begrenzt."
        );
        // End Config

        // Betriebssystem
        if (strstr($_SERVER['HTTP_USER_AGENT'], "Windows 95"))
        $bs "Win95";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "Windows 98"))
        $bs "Win98";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "NT 4.0"))
        $bs "NT";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "NT 5.0"))
        $bs "Win2k";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "NT 5.1"))
        $bs "WinXP";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "Win"))
        $bs "Win";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "Mac"))
        $bs "Mac";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "Linux"))
        $bs "Linux";
        else if (
        strstr($_SERVER['HTTP_USER_AGENT'], "Unix"))
        $bs "Unix";
        else
        $bs "Other";

        // Browser
        if (preg_match("MSIE"$_SERVER['HTTP_USER_AGENT'])) {
        $browser "IE";
        }
        else if (
        preg_match("Opera"$_SERVER['HTTP_USER_AGENT'])) {
        $browser ="Opera";
        }
        else if (
        preg_match("Firefox/([0-9].[0-9]{1,2})"$_SERVER['HTTP_USER_AGENT'])) {
        $browser "Firefox";
        }
        else if (
        preg_match("Safari/([0-9].[0-9]{1,2})"$_SERVER['HTTP_USER_AGENT'])) {
        $browser "Safari";
        }
        else if (
        preg_match("Mozilla/([0-9].[0-9]{1,2})"$_SERVER['HTTP_USER_AGENT'])) {
        $browser "Mozilla";
        }
        else {
        $browser "einen unbekannten Browser";
        }

        $host gethostbyaddr($_SERVER['REMOTE_ADDR']);
        $host2 strrev($host);
        $suffix substr($host0strpos($host2".")+1);
        $prov substr($hoststrlen($suffix));
        $prov substr($prov0strpos($prov"."));
        $provider strrev($suffix.$prov);

        $text "Deine IP ist " .$_SERVER['REMOTE_ADDR']. ",\ndein Host ist " .$host",\n"
        ."bei dir läuft " .$bs" und du verwendest " .$browser".\n"
        .$zufallstext[rand(0count($zufallstext)-1)];

        $t wordwrap($text$maxchars"\n");
        $t explode("\n"$t);

        foreach(
        $t as $tx)
        {
        $len[] = strlen($tx);
        }
        $l max($len);

        $tb $l imagefontwidth($f) + 12;
        $th count($t)*imagefontheight($f) + 16;

        $org imagecreatefrompng($bild);
        $ow imagesx($org);
        $oh imagesy($org);

        $spitze imagecreatefrompng($spitze);
        $sw imagesx($spitze);
        $sh imagesy($spitze);

        $im imagecreate($tb$th+$oh+$sh+4);
        $bg imagecolorallocate($im245252255);

        $schriftfarbe imagecolorallocate($im$c_schriftfarbe[0], $c_schriftfarbe[1], $c_schriftfarbe[2]);
        $schriftfarbe2 imagecolorallocate($im$c_schriftfarbe2[0], $c_schriftfarbe2[1], $c_schriftfarbe2[2]);
        $randfarbe imagecolorallocate($im$c_randfarbe[0], $c_randfarbe[1], $c_randfarbe[2]);
        $fuellfarbe imagecolorallocate($im$c_fuellfarbe[0], $c_fuellfarbe[1], $c_fuellfarbe[2]);

        imagefill($im00$bg);
        imagecolortransparent($im$bg);

        imagecopy($im$spitze$tb/2-$sw/2000$sw$sh);

        imagefilledrectangle($im0$sh$tb-1$th+$sh$randfarbe);
        imagefilledrectangle($im2$sh+2$tb-3$th+$sh-2$fuellfarbe);

        imagecopy($im$org$tb/2-$ow/2$th+$sh+100$ow$oh);

        foreach(
        $t as $say)
        {
        imagestring($im$f, ($tb strlen($say)*imagefontwidth($f))/2$i*imagefontheight(f)*ceil(6/count($t))+$sh+2$say$schriftfarbe);
        $i++;
        }
        imagestring($im$f2$tb-(strlen($text2)*imagefontwidth($f2)), $th+$sh+3$text2$schriftfarbe2);
        imagepng($im);
        imagedestroy($im);
        ?>

        Kommentar


        • #5
          Ooops, Fehler selbst gefunden ... kurz vorm Ende ist bei
          PHP-Code:
          imagestring($im$f, ($tb strlen($say)*imagefontwidth($f))/2$i*imagefontheight(f)*ceil(6/count($t))+$sh+2$say$schriftfarbe); 
          eine $-Zeichen verloren gegangen ...
          Danke trotzdem für Eure Bemühungen!

          Kommentar


          • #6
            Zitat von schmartin Beitrag anzeigen
            Hier nochmal der Quelltext mit Zeilenumbrüchen ... das Problem ist glaube ich "nur" noch, dass die Zeilen nicht umgebrochen werden ($t = wordwrap($text, $maxchars, "\n")
            Das heißt was genau? Der "Fehler" ist nun weg? Entferne auf jeden Fall mal die schließende PHP-Klammer am Ende des Scriptes.

            Mittlerweile gibt es auch Windows 10 und der Code könnte die eine oder andere "Optimierung" ertragen

            Kommentar


            • #7
              Zitat von schmartin Beitrag anzeigen
              Ooops, Fehler selbst gefunden ... kurz vorm Ende ist bei
              PHP-Code:
              imagestring($im$f, ($tb strlen($say)*imagefontwidth($f))/2$i*imagefontheight(f)*ceil(6/count($t))+$sh+2$say$schriftfarbe); 
              eine $-Zeichen verloren gegangen ...
              Danke trotzdem für Eure Bemühungen!
              In so einem Fall gibt es eine Fehlermeldung von PHP. Als beim nächsten mal zuerst ins Error-Log schauen.

              Kommentar

              Lädt...
              X