[PHP] Zufälliges Bild anzeigen

beewee

Cadet 4th Year
Registriert
Juli 2005
Beiträge
77
Hallo,

ich will für ein Forum ein PHP-Script, das bei jedem Aufruf ein zufälliges Bild ausgibt.
Ich habe es schon so probiert:
PHP:
<?PHP
$avatar[] = 'a.png';
$avatar[] = 'b.png';

mt_srand((double)microtime()*1000000);
$zufallszahl = mt_rand(0,count($avatar)-1);

// Bildheader schicken
header ("content-type:image/png");
header ("content-length:". filesize($avatar[$zufallszahl]));
readfile ($avatar[$zufallszahl]);
flush();
?>
So gibt er zwar das Bild, aber die Funktion GetImageSize gibt immer noch false zurück. Wie kann ich ein Bild ausgeben, sodass ich auch GetImageSize täuschen kann?

Danke

BeeWee
 
aaalso :)

Ich will für ein Forum, dass sich mein Avatar zeitlich verändert.
Beispiel: Tagsüber nix besonderes, nachts im Schlafanzug ;-)

Dazu will ich PHP nutzen, als Pfad für den Avatar also z.B. http://meinedomain.de/avatar.php verwenden
In avatar.php steht dann mein Script

Dummerweise ist bei vielen Foren die Avatargröße begrenzt und wird beim Einstellen eines neuen Avatarpfades mit getImageSize überprüft
Eine Abfrage mit GetImageSize auf meine avatar.php gibt allerdings false zurück --> Der Avatar wird nicht akzeptiert.
Wie mache ich es jetzt, dass ich der Funktion getImageSize vorgaukeln kann, dass avatar.php ein Bild ist, sodass mein Script dann als Avatar akzeptiert wird?

BeeWee
 
Hi,

wenn ich dich richtig verstehe möchtest du in einem Forum an der Stelle wo normalerweise der Pfad zu einem externen Avatar-Bild angegeben wird den Pfad zu deiner .php Datei angeben, und diese soll dem Forumsscript über die Header vortäuschen dass sie ein Bild ist ?
 
Jups ;- )
Eine Korrektur noch, damit es keiner falsch versteht:
und diese soll dem Forumsscript über die Header vortäuschen dass sie ein Bild ist ?
Sie soll es dem Forumscript nicht nur vortäuschen, sie ist ja quasi ein Bild ;-). Ich will nur wissen, wie ich es machen kann, dass getImageSize auf avatar.php angewendet, und dass getImageSize nicht false zurückgibt, sondern die Maße des ausgegebenen Bildes

BeeWee

P.S.: Sorry, falls es unverständlich ist, dann bin ich einfach zu müde:D
 
Ich muss nochmal nachhaken : Woher erfährst du dass die Forumssoftware für die getimagesizefunktion false zurückmeldet? Bist du Admin oder ähnliches in dem Forum?

Normalerweise werden die Dateitypen z.B. jpg oder gif beim angeben des Pfades doch eh überprüft, und da kann dein php Script vortäuschen was es will, also glaube ich nicht dass du ohne weiteres ein php Script als Bild einbinden kannst - schon aus Sicherheitsgründen

Gruß bbforce
 
Woher erfährst du dass die Forumssoftware für die getimagesizefunktion false zurückmeldet?
Ich habe mir eine eigene Datei erstellt, mit diesem Inhalt:
PHP:
<?PHP
var_dump(getImageSize("avatar.php"));
?>
Und die gibt false zurück

BeeWee
 
Ok, abgesehen von meinen allgemeinen Zweiflen an der Machbarkeit - was bewirkt dein oben gepostetes Script bis jetzt - bzw inwieweit funktioniert es - du schreibst es gibt ein Bild zurück - Sorry aber so richtig werd ich aus dem Script nicht schlau...
 
mein letzter Versuch heute:D

das Script gibt ein Bild aus, aber wenn ich das Script mit der Funktion getImageSize prüfe, wird false zurückgegeben. Ich wollte fragen, wie ich mein Script verändern muss, dass getImageSize nicht false, sondern die Größe des Bildes, das mein Script ausgegeben hat, zurückgibt

BeeWee
 
So, hab dein Script gerade mal ausprobiert - also die Dinge die ich mir gedacht hätte die falsch sein könnten haben auch nicht funktioniert.

Ich glaube das Problem liegt an der getimagesize Funktion - die kann mit einer php Datei nichts anfangen, selbst wenn diese durch die Header vortäuscht ein Bild zu sein. Mit der Funktion filesize erhält man sofort die Größe ausgegeben...

Also ich kann dir leider nicht weiterhelfen!

Gruß bbforce
 
.htaccess:
Code:
<FilesMatch "^avatar\.png$" >
ForceType application/x-httpd-php
</FilesMatch>
( - Möglichkeit 1 - )
Diese .htaccess-Datei schiebst du in den selben Ordner, benennst dann die Datei avatar.php in avatar.png um, und dann sollte das klappen.

Du kannst auch einfach die Datei avatar.png erstellen und folgendes tun:

( - Möglichkeit 2 - )

Auch hier wird die oben beschriebene .htaccess-Datei benötigt.

avatar.png:
PHP:
<?php
require ('avatar.php');
?>

avatar.php
PHP:
<?PHP
$avatar[] = 'a.png';
$avatar[] = 'b.png';

mt_srand((double)microtime()*1000000);
$zufallszahl = mt_rand(0,(count($avatar)-1));

$bildinhalt = "";
$fp = fopen ( $avatar[$zufallszahl] , "r" );
while ( !feof ( $fp ) ) {
   $bildinhalt .= fread ( $fp , 1024 );
}

// Bildheader schicken
header ("Content-Type: image/png");
header ("content-Length:".strlen($bildinhalt));
echo $bildinhalt;
exit;
?>
 
Zuletzt bearbeitet:
Sorry, dass ich hier erst so spät wieder antworte, aber hab den letzten Post irgendwie übersehen.
Ich habe das jetzt ausprobiert, aber es kommt immer ein Fehler, ich habe keine Berechtigung
[EDIT]Hm, auf localhost gehts, also liegts wohl am Server...[/EDIT]

BeeWee
 
Zuletzt bearbeitet:
Zurück
Oben