Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#34

Re: [PHP] Pfad aus externer PHP in einem IMG-Tag einbauen

  Alt 30. Jul 2005, 09:43
Es kann (wie gesagt) sein, dass Firefox die Header-Angaben ignoriert, die das Cachen unterbinden sollen, wenn er eine Redirection findet (also einen "Location:"-Header).

Hier mal ein vollständiges Codebeispiel das funktioniert und das du nur noch an deine Bedürfnisse anpassen musst.
Code:
<?php

    // Suchpfade für Bilder, wichtig: KEIN Slash am Ende!
    $pathes = array(
        "bilder"
    );

    // Mögliche Bildtypen (reguläre Ausdrücke)
    $extensions = array(
        "jpe?g?"   => 'image/jpeg',
        "gif"      => 'image/gif',
        "png"      => 'image/png',
        "tiff?"    => 'image/tiff',
        "(bmp|dib)" => 'image/bmp'
    );

    // Dateityp bestimmen
    function getFileType($file)
    {
        global $extensions;

        foreach ($extensions as $ext => $type)
            if (eregi('\.'.$ext.'$', $file))
                return $type;
        return "";
    }

    // Alle Dateien einsammeln
    $files = array();
    foreach ($pathes as $path)
    {
        $dir = opendir($path);
        while ($file = readdir($dir))
            if (is_file("$path/$file") && getFileType($file))
                $files[] = "$path/$file";
        closedir($dir);
    }

    // Nicht cachen
    header('Expires: Mon, 14 Aug 1995 03:00:00 GMT');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', FALSE);
    header('Pragma: no-cache');

    if (count($files))
    {
        // Zufällige Datei auswählen
        $file = $files[rand(0, count($files) - 1)];

        // Bild ausgeben
        header("Content-Type: " . getFileType($file));
        readfile($file, false);
    }
    else
        echo "<html>\n<body>\n<h1>Fehler</h1>\n

Keine Bilder gefunden</p>\n</body>\n</html>";

?>
Volker
  Mit Zitat antworten Zitat