Download Modul (DL erzwingen)

Gesperrt
PhoeniXaC
Beiträge: 16
Registriert: Mo 21. Jul 2008, 11:18
Kontaktdaten:

Download Modul (DL erzwingen)

Beitrag von PhoeniXaC »

Hi,

ich habe mal versucht, unser Download-Modul so anzupassen, dass der Download jeglicher Dateien erzwungen wird.

im Grunde genommen brauch ich ja nur die zu ladende Datei auf einer Extraseite mit den Headerinformationen:

Code: Alles auswählen

header("Content-Disposition: attachment; filename=".$cms_filename);
header("Content-Type: application/octet-stream");
Als übergeordnete Downloadmaske dient einfach eine Seite, welche auf die Downloadseite verlinkt - diese wiederum enthält folgenden Code:

Input:

Code: Alles auswählen

?> <?PHP
$anzahlLinks = CMS_VALUE[0]*3+1;
$acmswert = array();
for ($i = 2; $i <= $anzahlLinks; $i++) {
      $acmswert[$i] = array();
      $acmswert[$i]["VAR"] = "CMS_VAR[$i]";
      $acmswert[$i]["VAL"] = "CMS_VALUE[$i]";
}

?>
<table cellpadding="0" cellspacing="0" border="0">
<tr> <td>Text über den Downloads: 
</td>
<?PHP
echo '<td class="text_medium" style="padding:5px"><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" size="60"/>&nbsp;<input type="image" src="images/submit.gif"></td></tr>';
?>
<tr> <td>Anzahl der Links: 
</td>
<?PHP
echo '<td class="text_medium" style="padding:5px"><input type="text" name="CMS_VAR[0]" value="CMS_VALUE[0]" size="3"/>&nbsp;<input type="image" src="images/submit.gif"></td></tr>';

for ($i = 2; $i <= $anzahlLinks; $i++) {


    #Selected img directory
    $cms_dirname = $acmswert[$i]["VAL"];
    #Selected img
    $i++;
    $cms_filename = $acmswert[$i]["VAL"];
    
    if ($cms_dirname == '' || $cms_dirname == '0') {
        $cms_dirname = 'videos/';
    }
    
    #Get paths
    $sql = "SELECT
        htmlpath, frontendpath
        FROM
        ".$cfg["tab"]["clients"]."
        WHERE
        idclient = ".$client." ";
    
    $db->query($sql);
    
    if ($db->next_record()) {
        $htmlpath = $db->f('htmlpath');
        $frontendpath = $db->f('frontendpath');
    }
    
    $i--;
    
    #Choose Video folder
    echo '
        <tr>
            <td class="text_medium" style="padding:5px">'.mi18n("Multimediaverzeichnis w&auml;hlen").': </td>
            <td class="text_medium" style="padding:5px">';
    echo '<select name="'.$acmswert[$i]["VAR"].'" style="width:200px">';
    
    #Get upload directories
    $sql = "SELECT DISTINCT
        dirname
        FROM
        ".$cfg["tab"]["upl"]."
        WHERE
        idclient='$client' 
        ORDER BY
        dirname";
    
    $db->query($sql);
    
    $selected = false;
    while ($db->next_record()) {
        $dirname = $db->f('dirname');
        if ($cms_dirname != $dirname) {
            echo '<option value="'.$dirname.'">&nbsp;'.$dirname.'</option>';
        } else {
            $selected = true;
            echo '<option value="'.$dirname.'" selected="selected">&nbsp;'.$dirname.'</option>';
        }
    }
    
    if (!$selected) {
        echo '<option value="0" selected="selected">'.i18n("Bitte w&auml;hlen").'</option>';
    } else {
        echo '<option value="0">'.i18n("Bitte w&auml;hlen").'</option>';
    }
    
    $i++;
    echo '</select>&nbsp;<input type="image" src="images/submit.gif"></td></tr>';
    
    #Choose Video file
    echo '<tr><td class="text_medium" style="padding:5px">'.mi18n("Mulitmediadatei w&auml;hlen").': </td>
        <td class="text_medium" style="padding:5px">';
    echo '<select name="'.$acmswert[$i]["VAR"].'" style="width:200px">';
    echo '<option value="0" selected="selected">'.i18n("Bitte w&auml;hlen").'</option>';
    
    if ($cms_dirname != '0') {
        #Get uploaded files
        $sql = "SELECT
                filename
                FROM
                ".$cfg["tab"]["upl"]."
                WHERE
                idclient = '$client' AND
                dirname = '$cms_dirname'
                ORDER BY
                filename";
    
        $db->query($sql);
    
        while ($db->next_record()) {
            $img_name = $db->f('filename');
            if ($cms_filename != $img_name) {
                echo '<option value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
            } else {
                echo '<option selected="selected" value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
            }
        }
    }
    
    echo '</select>&nbsp;<input type="image" src="images/submit.gif"></td></tr>';
    
    
    $i++;
    if ($cms_dirname != '0') {
        echo '<tr><td class="text_medium" style="padding:5px">'.mi18n("Linktext").'</td>';
        echo '<td class="text_medium" style="padding:5px"><input type="text" name="'.$acmswert[$i]["VAR"].'" value="'.$acmswert[$i]["VAL"].'" size="60"/></td></tr>';
    
    }
    

}



    echo '</table>';
?>

<?php


Output:

Code: Alles auswählen

<?php
$anzahlLinks = CMS_VALUE[0]*3;
echo '<p>CMS_VALUE[1]</p><br /><br />';
for ($i=2; $i <= $anzahlLinks; $i++)
{

$cms_dirname = "CMS_VALUE[$i]";
$i++;
$cms_filename = "CMS_VALUE[$i]";
$i++;
$Linktext= "CMS_VALUE[$i]";

header("Content-Disposition: attachment; filename=".$cms_filename);
header("Content-Type: application/octet-stream");

echo '<p><a href="upload/'.$cms_dirname.$cms_filename.'">'.$Linktext.'</a></p><br />';
}
?>
Nun bin ich leider immernoch nicht allzu bewandert in PHP, um selbst einfach meine Anpassungen zu schreiben. Was ich versucht hatte, ist, die Dateieingabe in der übergeordneten Seite festzulegen und eine einzige Seite mit den beiden Header-Informationen für alle Downloads zu erstellen, welche dann die Variablen aufnimmt und entsprechend den Download der richtigen Datei erzwingt.

Ich hoffe ich hab das noch halbwegs verständlich darstellen können. Ansonsten versuch ich es gerne nochmal, wenn der Text zu chaotisch war ;)

Ich hoffe, ihr könnt mir helfen.

PhoeniXaC
Gesperrt