Ankündigung

Einklappen
Keine Ankündigung bisher.

Ordner auslesen und über ID einen Link ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ordner auslesen und über ID einen Link ausgeben

    Hallo,

    habe ein problem mit meinem Downloadscript.

    PHP-Code:
    <?php
    $download_dir 
    "downloads/";

    if (
    $handle opendir($_SERVER['DOCUMENT_ROOT'] . "/FFW/private/downloads/")) 
        {
        
    $a=1;
        while (
    false !== ($file readdir($handle))) 
            {
            if (
    $file != "." && $file != ".."
                {
                
    $files[a] = array($a => $file);
                
    $datei $download_dir.$files[$_GET['id']];
                echo 
    '<a href="' $datei '">' $file '</a>' '<br>';
                echo 
    $datei '<br>';
                
    $a++;
                }
            }

        }
    ?>
    Die Idee ist folgende:
    Das Script soll alle Dateien des Ordners "download" auflisten, allerdings sollten die Links zu diesen Dateien nicht den entsprechenden Dateinamen enthalten sondern per ID angezeigt werden.

    Problem ist:
    Bei der Ausgabe der Dateien wird nur der Ordner angezeigt und nicht die ID.


    Jemand 'ne idee wo da der Denkfehler ist?

    Danke schon mal.

  • #2
    PHP-Code:
    // diese Zeile
    echo '<a href="' $datei '">' $file '</a>' '<br>';
    // wird zu
    echo '<a href="' $datei '">' $GET['id'] . '</a>' '<br>'
    Hab ichs richtig verstanden?
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Wenn man

      Richtig debuggen
      1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
      2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
      3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
      4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
      5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
      6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
      7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
      8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.


      beachten würde, dann würde PHP nach Punkt 2 auch eine Antwort auf diese Frage geben, denn
      PHP-Code:
      $files[a] = array($a => $file); 
      veranlasst PHP zu meckern.

      Kommentar


      • #4
        @Bandit600, Danke. Der erste Fehler ist gefunden, das "$" fehlte. Wie immer die kleinen Dinge mit der großen Wirkung.

        @lstegelitz
        im endeffekt sollte es so aussehen
        PHP-Code:
        echo '<a href="' . /verzeichnis_auf_dem_webserver/downloads/download.php?id=[I]x[/I] . '">' name_der_datei.[I]xxx[/I'</a>' '<br>'

        PHP-Code:
        $files[$a] = array($a => $file); 
        Das Problem scheint zu sein, dass dem Array der Index fehlt. Die Frage ist nur warum ist das so? Sollte nicht durch das Fortlaufen der Variable $a auch ein fortlaufender Index entstehen?

        Kommentar


        • #5
          Dann schau dir die Zeile nochmal im Originalscript (Eingangspost) an... dort steht

          $files[a] = array($a => $file);

          Errorreporting hochschrauben, dann erscheint eine Warnung, das keine Konstante namens 'a' gefunden wird und stattdessen der String 'a' angenommen wird... das hat bandit dir aber auch schon gesagt.
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Das meinte ich mit dem fehlenden "$", wenn ich es so wie in meinem letzten post schreibe sollte er doch die variable die ich vorher mit
            PHP-Code:
            $a=1
            angelegt habe als integer nehmen.
            Das Problem ist das kein Index in
            PHP-Code:
            $files 
            angelegt wird, bzw ich nicht auf den index von $files per
            PHP-Code:
            $files[$_GET['id']] 
            zugreifen kann.

            Sorry wenn ich nicht die korrekte Terminologie benutze, bin noch nicht so lange beim PHP programmieren.

            Kommentar


            • #7
              print_r bzw. var_dump sinbd ganz grundlegende Debug-Mittel - bitte mache damit Testausgaben, wenn dir nicht klar ist, wie die Struktur deines Arrays aussieht.
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar

              Lädt...
              X