• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ordner auslesen und Dateien automatisch auflisten

Es war vielleicht etwas unglücklich, in meinem Beispiel einen absoluten Pfad zu wählen.

Wenn dein Code in /users/meladie/www/r1a/r1a.php steht und das oberste zu durchsuchende Verzeichnis /users/meladie/www/r1a/englisch sein soll, kannst du entweder

PHP:
$path      = '/users/meladie/www/r1a/englisch';

schreiben oder besser:

PHP:
$path      = './englisch';

Der Punkt steht für "aktuelles Verzeichnis".
 
Werbung:
Funktioniert nicht. Hatte ich mir auch schon gedacht.

außerdem werden die nicht automatisch verlinkt.
 
Zuletzt bearbeitet:
Wie ist der Status mittlerweile? Sieht für mich okay aus. Es werden fünf Dokumente angezeigt.

@automatisch verlinkt: Na ja, du machst einen <a>-Tag um die Ausgabe herum? Sehe das Problem nicht. Den Pfad hast du ja.
 
Werbung:
Ja, sie werden aufgelistet, aber der Unterorder wird noch mit angezeigt.

"./englisch/dokument.docx"
Soll aber so sein: "dokument.docx"

Kannst du mir sagen, wo genau ich die <a></a> reinsetzen soll?
 
Wahrscheinlich so:

PHP:
foreach ($iterator as $file) {
    echo '<a href="' . $file . '">' . basename($file) . '</a><br />' . "\n";
}
 
Danke dir herzlichst!
Der Code an sich funktioniert, solange er nur einmal in einer Seite ist.

Wenn du mal schauen magst wieder auf der Seite und hier der Quellcode:

Komischer ist dann nach dem Einloggen auch die Fußzeile weg bzw. includet der dann den footer.php gar nicht mehr.
 
Zuletzt bearbeitet:
Werbung:
Ungetestet:

PHP:
<?php

class FileExtensionFilterIterator extends FilterIterator
{
    protected $whitelist;

    public function __construct(Iterator $iterator, array $whitelist)
    {
        parent::__construct($iterator);
        $this->whitelist = $whitelist;
    }

    public function accept()
    {
        $fileInfo = parent::current();

        // Nur Dateien
        if (!$fileInfo->isFile()) {
            return false;
        }

        // Nur mit Endung aus $whitelist
        $pi = pathinfo($fileInfo->getFilename());
        if (!in_array(strtolower($pi['extension']), $this->whitelist)) {
            return false;
        }

        return true;
    }
}

function listfiles($path)
{
    $whitelist = array('docx'); // Aufzulistende Dateiendungen

    $iterator = new FileExtensionFilterIterator(
                    new RecursiveIteratorIterator(
                        new RecursiveDirectoryIterator($path)),
                    $whitelist);

    foreach ($iterator as $file) {
        echo '<a href="' . $file . '">' . basename($file) . '</a><br />' . "\n";
    }
}

include ("../head.php");

// Define your username and password

$username = "r1a";
$password = "geil";

if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {

?>
<style type="text/css">
<!--
.Stil1 {font-size: 12px}
-->
</style>


<h1>Login R1a</h1>

<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']; ?>">

    <p><label for="txtUsername">Username:</label>

    <br /><input type="text" title="Enter your Username" name="txtUsername" /></p>

    <p><label for="txtpassword">Password:</label>

    <br /><input type="password" title="Enter your password" name="txtPassword" /></p>

    <p><input type="submit" name="Submit" value="Login" /></p>
</form>


<?php

} else {

?>


<p><h2>SFE Osthessen, Fulda - R1a</h2></p>

<br class="Stil1">Die Dokumente sind im "docx"-Format abgespeichert und lassen sich mit neueren Versionen des Microsoft Word öffnen.</br>
<br class="Stil1">Hier werden keine Hausaufgaben veröffentlich, lediglich nur im Unterricht Geschriebenes und zusammen Erarbeitetes.</br>
<br class="Stil1">Ich kann nicht für Aktualität, Vollständigkeit und Richtigkeit garantieren.</br>
<br class="Stil1">Bitte nur per "Rechtsklick ->Speichern unter..." herunterladen.</br>
<p></p>

<p><h3>Englisch</h3></p>
<?php listFiles('./englisch'); ?>

<p><h3>Biologie</h3></p>
<?php listFiles('./biologie'); ?>

<p><h3>HPB</h3></p>
<?php listFiles('./hpb'); ?>

<?php

}

include ("../footer.php");
 
Werbung:
Zurück
Oben