Erweiterung - Downloadarchiv Probleme

Wenn du Fragen zu EasyHP hast, eröffne hier ein Thema.

Moderator: Supporter

Antworten
matze93
Inaktiv
Beiträge: 314
Registriert: 21. Januar 2009, 14:10

Erweiterung - Downloadarchiv Probleme

Beitrag von matze93 »

Hey,
ich wollte den Downloadscript von mir erweitern und habe jetzt ein Problem. Zwar funktioniert mein Script, doch nur solange ich die Ausgabe in der downloads.php mache. Da ich mein Code an EasyHP anpassen möchte,
dachte ich mir, dass ich zur besseren Übersicht HTML und PHP trennen sollte. Also das ganze ins Template von Style einzubauen.
Mein Problem: Jetzt erkennt er nicht mehr alle Downloads (.zip/.rar) wie zuvor, sondern zeigt mir nur einen an.
Meine Codes:
Meine downloads.php

Code: Alles auswählen

<?php

define("IN_EASYHP", true);

session_start();

if ((!isset($_SESSION['captcha']) AND $_COOKIE['captcha_set'] != 'TRUE') AND ($_GET['mode'] == "new" OR $_GET['mode'] == "save_new")) {
    header("Location: captcha.php?link=downloads.php");
}

include "includes/mysql.php";
include "common.php";
include "includes/website.php";

// Downloadscript
@$pfad = $_GET['pfad'];

$home = "downloads";

if (empty($pfad)) {
    $dir = $home;
} else {
    $dir = $pfad;
}

    //readfile/readdir
    $i=0;
    $j=0;
    
    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
        
            if ($file != "." && $file != "..") {
            
                if(is_dir($dir."/".$file)) {
                    $blub[$j] = $file;
                    $j++;
                } else {
                    // Erlaubte Dateitypen, die angezeigt werden
                    if (strstr($file, ".rar") || strstr($file, ".zip")) {
                    $bla[$i] = $file;
                    $i++;
                    }
                }

            }    
    }
    closedir($handle);
}

//Download files
echo "<section id='content3'>";
    echo '<div align=center>';
    
    if ($dir != $home) {
        $home ="<a href='downloads.php'>Home</a>";
                $back =" <a href='javascript:history.back()'>zur&uuml;ck</a><br><br>";
    }
    
        @krsort($blub);
    if(count($blub)>0) {
        foreach ($blub as $file) {
            $folder ="<a href=\"downloads.php?pfad=$dir/$file\">$file</a>";
        }
    }
    
    @krsort($bla);
    if(count($bla)>0) {
        foreach ($bla as $file) {
            $filesize = filesize ("$dir/$file");
    
            if (strstr($file, ".zip")) {
                $type = ".zip";
                $bild = "styles/matze/images/download_zip.png";
            }
    
            if (strstr($file, ".rar")) {
                $type = ".rar";
                $bild = "styles/matze/images/download_rar.png";
            }
    
            if (empty($bild)) {
                $bild = "styles/matze/images/download_file.png";
            }
    
            $suchmuster = array();
            $suchmuster[1] = "/.zip/";
            $suchmuster[2] = "/.rar/";
    
            $dateiname = preg_replace($suchmuster, "", $file);
    
            $link = "<a href=\"$dir/$file\"><img src=\"$bild\" alt=\"$file\"></a>";
        }    
    }
    echo "</div>";
echo "</section>";

$replace = array (
    'page_img' => PAGE_IMG,
    'info_img' => INFO_IMG,
    'site_img' => SITE_IMG,
    'error_img' => ERROR_IMG,
    'title' => $lang['downloads'],
    'content' => $lang['downloads_on'],
    'filename' => $dateiname,
    'filesize' => $filesize,
    'size' => $lang['size_bytes'],
    'link' => $link,
    'folder' => $folder,
    'home' => $home,
    'back' => $back
);

$temp_downloads_off = make_message(ERROR_IMG, $lang['disabled'], $lang['downloads_off'], 'resume', 'index.php');
$temp_downloads = get_tpl(DOWNLOADS . 'download_body.html', DOWN_IMG, $lang['downloads'], 1);

//
// Does downloadlist is active?
//
if ($cf->down_on == '0') {
    echo $temp_downloads_off;
    footer(1);
}    
    
//
// Downloadlist active
//
echo $temp_downloads;

footer(0);

?>
Meine ../templates/downloads/downloads_body.html

Code: Alles auswählen

<section id="content2">
    
    <div>{content}</div>
    
    {home} - {back} <br><br>

    {folder} <br><br>
    
    {filename} - {filesize}{size} - {link}<br>
    
</section>
Kann mir jemand erklären was ich falsch gemacht habe bzw. das ganze verbessern?
Danke
Matthias
Benutzeravatar
daniel
Ehemaliger
Beiträge: 413
Registriert: 13. März 2008, 16:49
Wie bist du auf EasyHP gekommen?: Werbung auf phpBB.de
Wohnort: Bremen
Kontaktdaten:

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von daniel »

Du müsstest die Liste der Dateien komplett als eine Variabel deklarieren. also so zB:

Code: Alles auswählen

    <section id="content2">
       
        <div>{content}</div>
       
        {home} - {back} <br><br>

        {folder} <br><br>
       
        {dateiliste}
       
    </section>
Und um dann noch dem Templatesystem komplett gerecht zu werden müsstest du dann ein zweite Templatedatei anlegen, die ungefähr so aussieht:

Code: Alles auswählen

{filename} - {filesize}{size} - {link}<br />
Diese Datei müsstest du bei jedem Schleifendurchlauf einlesen und mit Inhalt füllen. Dann müsste der String der dabei herauskommt, an die bereits bestehende Dateiliste angehängt werden.
Am ende, nachdem die Schleife durch ist, wird dann diese Variabel mit der kompletten Dateiliste in die downloads_body.html anstelle des "{dateiliste}" eingefügt.
Ich glaub ich hab das jetzt aber komplizierter erklärt, als es tatsächlich ist :)
matze93
Inaktiv
Beiträge: 314
Registriert: 21. Januar 2009, 14:10

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von matze93 »

Lieber kompliziert als falsch. Habs verstanden. Werd dann mal dran rumbasteln. Danke.
matze93
Inaktiv
Beiträge: 314
Registriert: 21. Januar 2009, 14:10

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von matze93 »

Also ich habs nicht hinbekommen. Immer noch wird nur eine Datei erkannt.
Ich habe dich so verstanden, Daniel, dass meine Datei so aussehen sollte.
Kannst du dir des mal anschauen und mir sagen, wo mein Fehler ist?

Code: Alles auswählen

<?php

define("IN_EASYHP", true);

session_start();

if ((!isset($_SESSION['captcha']) AND $_COOKIE['captcha_set'] != 'TRUE') AND ($_GET['mode'] == "new" OR $_GET['mode'] == "save_new")) {
    header("Location: captcha.php?link=downloads.php");
}

include "includes/mysql.php";
include "common.php";
include "includes/website.php";

// Downloadscript
@$pfad = $_GET['pfad'];

$home = "downloads";

if (empty($pfad)) {
    $dir = $home;
} else {
    $dir = $pfad;
}

    //readfile/readdir
    $i=0;
    $j=0;
    
    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
        
            if ($file != "." && $file != "..") {
            
                if(is_dir($dir."/".$file)) {
                    $blub[$j] = $file;
                    $j++;
                } else {
                    // Erlaubte Dateitypen, die angezeigt werden
                    if (strstr($file, ".rar") || strstr($file, ".zip")) {
                    $bla[$i] = $file;
                    $i++;
                    }
                }

            }    
    }
    closedir($handle);
}

//Download files
    
if ($dir != $home) {
    $home ="<a href='downloads.php'>Home</a>";
        $back =" <a href='javascript:history.back()'>zur&uuml;ck</a><br><br>";
}
    
@krsort($blub);
if(count($blub)>0) {
    foreach ($blub as $file) {
        $folder ="<a href=\"downloads.php?pfad=$dir/$file\">$file</a>";
    }
}
    
@krsort($bla);
if(count($bla)>0) {
    foreach ($bla as $file) {
        $filesize = filesize ("$dir/$file");
    
        if (strstr($file, ".zip")) {
            $type = ".zip";
            $bild = "styles/matze/images/download_zip.png";
        }
    
        if (strstr($file, ".rar")) {
            $type = ".rar";
            $bild = "styles/matze/images/download_rar.png";
        }
    
        if (empty($bild)) {
            $bild = "styles/matze/images/download_file.png";
        }
    
        $suchmuster = array();
        $suchmuster[1] = "/.zip/";
        $suchmuster[2] = "/.rar/";
    
        $dateiname = preg_replace($suchmuster, "", $file);
    
        $link = "<a href=\"$dir/$file\"><img src=\"$bild\" alt=\"$file\"></a>";
        $dateilist = implode(" ", file("styles/matze/template/downloads/download_dateilist.html"));
    }    
}

$replace = array (
    'page_img' => PAGE_IMG,
    'info_img' => INFO_IMG,
    'site_img' => SITE_IMG,
    'error_img' => ERROR_IMG,
    'title' => $lang['downloads'],
    'content' => $lang['downloads_on'],
    'dateilist' => $dateilist,
    'filename' => $dateiname,
    'filesize' => $filesize,
    'size' => $lang['size_bytes'],
    'link' => $link,
    'folder' => $folder,
    'home' => $home,
    'back' => $back
);

$temp_downloads_off = make_message(ERROR_IMG, $lang['disabled'], $lang['downloads_off'], 'resume', 'index.php');
$temp_downloads = get_tpl(DOWNLOADS . 'download_body.html', DOWN_IMG, $lang['downloads'], 1);

//
// Does downloadlist is active?
//
if ($cf->down_on == '0') {
    echo $temp_downloads_off;
    footer(1);
}    
    
//
// Downloadlist active
//
echo $temp_downloads;

footer(0);

?>
Benutzeravatar
rboe
Inaktiv
Beiträge: 18
Registriert: 25. November 2009, 22:59
Wie bist du auf EasyHP gekommen?: Internet
EasyHP Website: apollosys.de
Wohnort: DE | Baden | Rhein-Neckar-Kreis
Kontaktdaten:

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von rboe »

Also ich hab dein Skript bei mir mal in eine "download.php" gesetzt und hochgeladen:
http://apollosys.de/downloads.php

Bei mir erkennt er drei Dateien. Das einzige was n bissel doof ist, dass man auf der Admin-Seite die "Download"-Seite für die Navigation nicht wählen kann; Workaround: Weg über die MySQL-DB ;)
mfg,
Ronny Böttcher

CNS Apollo Computer Systems
+++ PCs/NBs | Server | Storage | Netzwerk | Designservices | Hosting +++
matze93
Inaktiv
Beiträge: 314
Registriert: 21. Januar 2009, 14:10

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von matze93 »

Kommt dann alles noch. hast du meinen oberen oder meinen unteren Code verwendet?
Weil bei mir zeigt er's immer noch nicht so an, wie ich's haben möchte. Könnte aber auch an meinem Privaten Server liegen. Des Ding ist mal wieder abgestürzt. Muss mir mal selber einen besseren Basteln ;-)
Benutzeravatar
rboe
Inaktiv
Beiträge: 18
Registriert: 25. November 2009, 22:59
Wie bist du auf EasyHP gekommen?: Internet
EasyHP Website: apollosys.de
Wohnort: DE | Baden | Rhein-Neckar-Kreis
Kontaktdaten:

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von rboe »

Uff, ja gute Frage... habs grad mal verglichen und sieht weder nach dem einen noch nach dem andren aus...

Code: Alles auswählen

<?php
define("IN_EASYHP", true);

include "includes/mysql.php";
include "common.php";
include "includes/website.php";

echo make_message(SITE_IMG, "Downloads", "Diese Homepage beinhaltet:", '', '');

echo "<div id='content'>";
echo "<h2>Downloads</h2>";
if ($handle = opendir('downloads/')) {
  while (false !== ($file = readdir($handle))) {
    if (!preg_match("/\.(.?|php)$/",$file)) {
      echo '<a href="downloads/' .$file. '">' .$file. '</a><br>';
    }
  }
  closedir($handle);
}


echo "</div>";

footer(0);

?>
mfg,
Ronny Böttcher

CNS Apollo Computer Systems
+++ PCs/NBs | Server | Storage | Netzwerk | Designservices | Hosting +++
matze93
Inaktiv
Beiträge: 314
Registriert: 21. Januar 2009, 14:10

Re: Erweiterung - Downloadarchiv Probleme

Beitrag von matze93 »

Ja, du hast die Version, die ich als Erweiterung bereitgestellt habe. Doch diese Version hat meiner Meinung nach ein Update möglich und dort hängt's bei mir.
Antworten