Create an account


Die Random-Signatur

#1
Hallo Community,
ich wollte mal mein kleines php-Script posten, mit dem meine Signatur hier um Forum läuft Big Grin

Vll. haben sich schon mal welche gefragt, ob es möglich ist, eine Signatur zu erstellen, die ein zufälliges Bilder anzeigt, wenn man die Seite lädt.

Alles was man dazu benötigt ist ein PHP-tauglicher Webspace im Internet, sei es bei irgendeinem Freehoster.

** Vorbereitung **

Zuerst fängt man an sich eine Textdatei zu erstellen. In jede Zeile fügt man den Direktink zum jeweiligen Bild ein, welches später in der Signatur angezeigt werden kann. Diese datei speichert man dann als z.B "sigs.txt" ab. Diesen Namen solltet ihr beibehalten, da ihr den gleich noch braucht.

Ein Beispiel für die Text-Datei findest du unter dem fertigen Script.

** Der Code **

Ihr erstellt eine Datei z.b mit dem Namen "random.php"
Am besten könnt ihr die Datei in einem Editor wie Notepad bearbeiten.

Um die Datei in php auszulesen benötigt ihr die Funktion file().
Dieses speichert man dann in eine Variable wie hier:
PHP Code:
$file file('sigs.txt'); // die sigs.txt (Wo eure Bilder drinne sind) liegt im selbem Ordner wie die random.php 

Da die Ausgabe von file() in einem Array erfolgt geben wir nun wie folgt das Array mit der Array-Schleife foreach() aus:
PHP Code:
$i 0;
foreach(
$file as $f) {
    
$im[$i] = $f;
    if(
substr($f01) != '#'$i += 1;

In der letzten Zeile wird somit gleich überprüft, ob am Anfang der Zeile (Strings) das Zeichen '#' steht. Wenn das zutrifft wird $i nicht um eins erhöht und der aktuelle Key von $im überschrieben.
Dies finde ich ist nützlich, wenn man Zeilen auslassen möchte bzw. auskommetieren möchte innerhalb der Text-Datei.

Danach wird das zufällige Bild ermittelt, das ausgegeben werden soll:
PHP Code:
$r rand(0, ($i-1)); 
$i ist hierbei der Key des letzten Wertes des Arrays $im. Da er beim letzten Durchlauf der Schleife nochmal um eins erhöht wird wird er einfach um 1 subtrahiert.
Die Funktion rand() macht somit nichts anderes als einen zufälligen Wert zwischen der ersten und zweiten Zahl auszugeben.

Den Wert zum dazugehörigem Key speichern wir dann in einer einfachen Variable:
PHP Code:
$pic $im[$r]; 

Im Folgenden kürzen wir den Link (String) nochmal um 1 Zeichen, wenn es nicht die letzte Zeile in der Textdatei ist, da im String der Zeilenumbruch hinten noch auftaucht, den wir entfernen müssen, da er das Bild sonst später nicht findet.
PHP Code:
if($pic != end($im)) $pic substr($pic0, -1); 

Zum Schluss leiten wir den Browser noch auf das Bild um, indem wir Informationen an den header senden.
PHP Code:
header('Location: '.$pic); 

** Fertiges Script **

PHP Code:
<?php
$file 
file('sigs.txt');

$i 0;
foreach(
$file as $f) {
    
$im[$i] = $f;
    if(
substr($f01) != '#'$i += 1;
}

$r rand(0, ($i-1));
$pic $im[$r];

if(
$pic != end($im)) $pic substr($pic0, -1);

header('Location: '.$pic);
?>

Ein Beispiel für die Text-Datei könnte sein:
Code:
http://www.imgbox.de/users/SunRed/Pics/born_yes.gif
#http://chzmemebase.files.wordpress.com/2011/07/memes-just-another-day.gif
http://i.chzbgr.com/completestore/2011/7/14/f0bc47e6-c8fc-4f9e-9da4-97176343c2ff.gif
http://gifs.gifbin.com/082012/1346345872_saved_skat_jump_fail.gif
http://gifs.gifbin.com/042011/1303149519_turtle-bites-cat.gif

Die zweite Zeile wird in diesem Fall ignoriert/auskommentiert.

Nachdem ihr es via FTP o.ä. hochgeladen habt, könnt ihr das ganze im Forum via bbCodes z.b mit
Code:
[img]http://deinedomain.de/random.php[/img]
oder in HTML mit
Code:
<img src="http://deinedomain.de/random.php">
einbinden.
Natürlich müsst ihr eure Domain/Subdomain nehmen, die auf euren Webspace verleitet mit dem jeweiligen Dateinamen der PHP-Datei und eventuellem Pfad.

Anmerkung:
Ich weiß, es ist zwar kein schwieriges und langes Script, aber für php-Anfänger, die eine "etwas andere" Signatur wollen durchaus nützlich. Dafür habe ich es auch etwas ausführlicher erklärt.

MfG, SunRed
[Image: sig.gif]
Reply



Messages In This Thread
Die Random-Signatur - by SunRed - 19-09-2012, 18:51
RE: Die Random-Signatur - by GTAzoccer - 05-08-2014, 19:53


Forum software by © MyBB Theme © iAndrew 2016