Signatur mit zufälligen Bildern

  • Tutorial

  • Sir_Dark
  • 4642 Aufrufe 10 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Signatur mit zufälligen Bildern

    Hier mal eine kleine Anleitung wie ihr in eurer Signatur immer eine zufällige Grafik anzeigen lassen könnt.

    Dazu braucht ihr…

    …einen Webspace der PHP hat und fremdes verlinken erlaubt
    …einen FTP-Client
    …ein paar Signaturen die den Boardregeln entsprechen

    Zuerst einmal erstellt ihr das PHP-Script.

    PHP-Quellcode

    1. <?php
    2. $sigs = array();
    3. foreach (glob("*.png") as $filename) {
    4. $sigs[] = $filename; }
    5. foreach (glob("*.jpg") as $filename) {
    6. $sigs[] = $filename; }
    7. foreach (glob("*.gif") as $filename) {
    8. $sigs[] = $filename; }
    9. $zufall = sizeof($sigs);
    10. $zufall = rand(0,$zufall-1);
    11. header('Content-Type: image/'.substr($sigs[$zufall],-3,3));
    12. echo(@file_get_contents($sigs[$zufall]));
    13. ?>
    Alles anzeigen


    Das schreibt ihr in eine leere Textdatei und diese benennt ihr um in "index.php".
    die Signaturen schiebt ihr dann alle in denselben Ordner.

    Jetzt startet ihr euren FTP-Client und erzeugt auf eurem Webspace ein Verzeichnis mit z.B. dem Namen "signatur.gif".
    wichtig ist das dieses Verzeichnis die "Dateiendung" *.gif hat (wobei *.jpg oder *.png auch ginge).
    dann ladet ihr nur noch die Datei "index.php" und die Signaturbilder in das erstellte Verzeichnis.

    jetzt könnt ihr euer Script über folgenden BBCode in eure Signatur einbinden:
    (Die Addresse ist dann bei euch natürlich eine andere)

    [.IMG]http://deinwebspace.de/signatur.gif[/IMG]
    (Ohne"." beim [IMG])

    Achtet bitte nur darauf das am Ende nach "signatur.gif" kein "/" steht, sonst wird das Bild nämlich nicht angezeigt!

    [B]Und bitte haltet die Signaturregeln ein![/B][/img]
  • Dragunov schrieb:


    Das ist ja ne ganz nett Idee! Danke für die ausführliche Erklärung

    Vor allem, weil Bilder in der Signatur in diesem Board nicht zugelassen sind :D

    @topic:
    Ganz nettes Tutorial. Mit einer Erklärung deines Codes würde es für mich ein sehr gutes Tutorial werden, so lernt niemand was. Wäre cool, wenn du das noch reineditieren würdest.

    Btw. Dein Gedankengang bei der Forenwahl ist mir schleierhaft. (Im PHP-Forum hät ich es noch verstehen können, aber HTML??!)
    Hier gehört sowas rein: Tutorialsektion - Freesoft-Board

    Gruß
    Broken Sword

    Ach und bevor ich es vergesse: Verweise zu anderen Foren sind gegen die Boardregeln! - Rausnehmen!
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Broken Sword schrieb:

    Vor allem, weil Bilder in der Signatur in diesem Board nicht zugelassen sind :D

    ...

    Btw. Dein Gedankengang bei der Forenwahl ist mir schleierhaft. (Im PHP-Forum hät ich es noch verstehen können, aber HTML??!)
    Hier gehört sowas rein: Tutorialsektion - Freesoft-Board


    Sorry du hast echt Recht und das sollte auch garnet in den html bereich. Wäre nett wenn ein Admin das verschieben könnte.

    Zu den Bildern im Forum... Naja sicher sind nicht alle nur in diesem Board angemeldet. Da könnte es dann einigen in anderen Boards helfen.
  • Ich hab das Script mal optimiert und übernehme mal dein Part mit dem Beschreiben

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. $sigs = array();
    4. foreach(glob('*.{png,jpg,jpeg,gif,bmp}', GLOB_BRACE) as $filename) $sigs[] = $filename;
    5. srand(microtime(true) * 10000000);
    6. $zufall = array_rand($sigs);
    7. header('Content-Type:'.mime_content_type($sigs[$zufall]));
    8. echo file_get_contents($sigs[$zufall]);
    9. ?>

    Zeile 2: Alle Fehlermeldungen anzeigen

    Zeile 3: Ein Array namens sigs inizalisieren

    Zeile 4 - glob: Glob durchsucht das aktuelle Verzeichnis nach einem Muster (erster Wert), wenn die Funktion mit GLOB_BRACE makiert wurde, werden bei {1,2,3} nach 1 oder 2 oder 3 gesucht. Sternchen ist das Wildcard-Symbol und gewährt jedes Zeichen ohne Limit (hier der Dateiname - ohne Endung).

    Zeile 4 - foreach: glob gibt ein Array mit den enthaltenen Dateinamen zurück, diese werden in sigs eingespeist.

    Zeile 5: srand initialisiert den Zufallsgenerator, damit dieser nicht immer das gleiche ausgibt. Soll ab 4.2.0 eigentlich von selbst geschehen, jedoch beweist ein Test häufig das Gegenteil. Da hier mircotime mit true geholt wird, wird PHP 5.0.0 vorrausgesetzt.

    Zeile 6: array_rand ist praktischer als erst das Array zu zählen

    Zeile 7: Es wird der filetype an den Browser übergeben, was für ein Dateityp übertragen wird. filetype gibt diesen Datentyp von dem Dateinamen wieder. (So ist auch der Fehler mit image/jpg [richtig: jpeg] umgangen)

    Zeile 8: Nun wird die Datei ausgelesen und mit echo an den Brwoser gesendet - Fertig


    Zu guter Letzt noch ein Hinweis, wie mod_rewrite wirklich funktioniert:

    Quellcode

    1. RewriteEngine On
    2. RewriteRule ^/signatur.gif$ /dynamische_signatur/index.php [L]


    Hoffe, ich krieg jetzt nicht vom Threadstarter eins auf den Deckel und wünsche allen ein frohes Programmieren :)

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • humhum schrieb:

    Bloß das es mit filetype() nicht funktionieren sollte.

    Es funktioniert natürlich einwandfrei ;) (Habe es getestet)
    Nenn mir einen Grund, warum dies nicht der Fall sein sollte?

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Naja, der Browser erkennt selbstständig, um was für einen Typ es sich handelt, da du mit o.g. Script einen ungültigen content-type zurücklieferst. Wenn du filetype() aufrufst, dann wird dir gesagt, ob es sich z.B. um eine Datei (file) oder ein Verzeichnis (directory) handelt. Praktisch wird dein Header immer

    Content-Type: file

    beinhalten. Probier es aus. ;)
  • lol, stimmt.
    Da war was, hat ich schon mal das Problem, na ja... genauso, wie 2 mal png vorkommt.

    Schubidu, wenigstens zeigt das, dass sich wenigstens einer den Code ankuckt. :D

    Ist geändert.
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hoffe, ich krieg jetzt nicht vom Threadstarter eins auf den Deckel und wünsche allen ein frohes Programmieren


    Nein keine Sorge. Finde es echt praktisch und sogar richtig gut das du das übernommen hast, da ich mich noch nicht so lange mit html/php befasse und es mit sicherheit nicht so gut wie du hätte erklären können. Zumal vielen dank für die optimierte Version von dir.