Bild mit dynamischen Daten generieren - aber wie?

B

ByeBye 8492

Moin Moin,

hier im Forum sieht man oft leute mit "dynamischen Bannern" da steht dann z.B. " Noch 7:30 Stunden bis GSZS" oder " Du bist besucher nr 73" etc.


Wie kann man sowas machen?
 
-

PHP:
header("Content-type: image/png");
set_time_limit(0);
function swap($var)
{
    $var = str_replace("Ö", "Ö", $var);
    $var = str_replace("Ä", "Ä", $var);
    $var = str_replace("Ü", "Ü", $var);
    $var = str_replace("ü", "ü", $var);
    $var = str_replace("ö", "ö", $var);
    $var = str_replace("ä", "ä", $var);
    $var = str_replace("&","&", $var);
    $var = str_replace(""","\"", $var);
    $var = str_replace("&lt;", "<", $var);
    $var = str_replace("&gt;", ">", $var);
    return $var;
}

$monat = date("n", time());
$tag = date("d", time());
$gzsz = mktime(19,40,0,$monat,$tag,2002);
$stunden = date("G", $gzsz) - date("G", time());
$minuten = date("i", $gzsz) - date("i", time());
if( $stunden < 0)
{
    $stunden+=24;
}
if( $minuten < 0 )
{
    $minuten+=60;
    $stunden--;
}
if( $stunden == 1)
    $h = "Stunde";
else
    $h = "Stunden";
    
if( $minuten == 1)
    $m = "Minute";
else
    $m = "Minuten";
// ----------------------------- Anfang tut.de ----------------------------
$url = $HTTP_REFERER;
$byte = fopen($url, "r");
$tech = array();
$zahl = 0;
while( !feof($byte) )
{
    $tech[$zahl] = fgets($byte, 1024);
    if( preg_match_all("=<title>(.*)</title>=siU", $tech[$zahl], $title) )
       break;
    $zahl++;
}
// ----------------------------- Ende tut.de --------------------------------

// ------------------------------ Anfang heise.de ---------------------------
$byte1 = fopen("http://www.heise.de/newsticker", "r");
$tech1 = array();
$zahl1 = 0;
$flag = false;
while( ! feof($byte1) )
{
    $tech1[$zahl1] = fgets($byte1, 1024);
    $date = date("d.m.Y", time());
    if( preg_match_all("=<b>$date(.*)</a>=siU", $tech1[$zahl1], $news) )
    {
        $flag = true;
        break;
    }
    $zahl1++;
}
$string = $news[1][0]."</a>";
$found = substr($string, strpos($string, "<A"));
preg_match_all("=<A HREF[^>]*>(.*)</a>=siU", $found, $news2);

// --------------------------------- Ende heise.de --------------------------
$thread = substr($title[1][0],strpos($title[1][0],"-")+2);
$thread = swap($thread);
$news2[1][0] = swap($news2[1][0]);
if( ! $flag )
    $news2[1][0] = "Bisher gibt es noch keine News von heise.de !";
// --------------------------------- Counter ----------------------------------
$counter1 = file("counter.txt");
$counter1[0]++;
$datei = fopen("counter.txt", "w+");
flock( $datei, LOCK_EX);
fwrite($datei, $counter1[0]);
flock($datei, LOCK_UN);
fclose($datei);
$counter = file("counter.txt");
// -------------------------------- Bildausgabe -----------------------------
$hoehe = 100;
$breite = 700;
$image = imagecreate( $breite, $hoehe );
$weiss = imagecolorallocate( $image, 255,255,255);
$black = imagecolorallocate( $image, 0,0,0);
$fontsize = 9;
$font = "";
$text = "Deine IP ist ".$REMOTE_ADDR." ----- Diese Signatur wurde bisher ".$counter[0]." mal aufgerufen.\r\n";
$text .= "Es sind noch ".$stunden." ".$h." und ".$minuten." ".$m." bis zur nächsten Folge \"Gute Zeiten, Schlechte Zeiten\", ";
$text .= "außer wir haben WE/Feiertag.\r\n";
$text .= "\r\n";
$text .= "Du liest gerade im Thread: ".$thread."\r\n";
$text .= "Die neueste Heise Nachricht: ".$news2[1][0]."\r\n";
imagettftext( $image, $fontsize, 0, 1, 13 , $black, $font, $text);
imagecolortransparent( $image, $weiss );
imagepng($image);
?>
Das hatte ich damals für meine GZSZ Signatur benutzt. Musst mal schaun, was du daraus gebrauchen kannst.
 
Könnt ihr mir feof erklären? Die Funktion versteh ich nicht und im Manual http://de3.php.net/feof steig ich nicht durch.

//edit
if( preg_match_all("=<b>$date(.*)</a>=siU", $tech1[$zahl1], $news) )

Die beiden roten Teile versteh ich ebenfalls nicht richtig. ist (.*) für alles, was dazwischen ist? Oder was muss ich darunter verstehen?
Und was ist siU?
 
Zuletzt bearbeitet:
feof() wird eigentlich nur verwendet, um zu überprüfen, ob sich der Dateizeiger schon am Ende der Datei befindet: if(!feof("datei.txt")) oder so ähnlich. Die Funktion gibt afaik entweder true oder false zurück.
 
[ img ]http://www.deine-seite.de/bild.php[ /img ]

Ohne die Leerzeichen natürlich
 
Zuletzt bearbeitet:
und am ende [ /url ] oder meinst du [ /img ] ??

funktioniert das so auch, wenn in dem php script nur text ausgegeben wird und kein bild?
 
ahhh, man sollte nie 2 sachen gleichzeitig machen... mein fehler!!!
bild.php



Und es funktioniert nur mit dem Bild. In Header vom PHP script steht ja, das es ein bild ist.
 
Ok, verständlich, aber man kann das doch sicher auch mit einer Textausgabe machen, oder?

Nehmen wir an, ich habe auf meiner Domain ein Script liegen, da steht drin:

PHP:
<?php 
echo "ich bin toll ;-)"; 
?>

Kann ich das dann nicht auch in meiner Signatur ausgeben lassen?
 
Zurück