ich habe ein Modul geschrieben, das beim Download einer Datei die Berechtigung prüft und danach die Datei zum öffnen oder speichern anbietet. Es werden nur Dateienn zur Verfügung gestellt, die in einem Unterverzeichnis von cms/upload/download/... liegen.
Ich habe nur noch ein Problem. Bei einigen IE-Konfigurationen haben Besucher gemeldet, dass beim direkten Öffnen von Downloads ein Fehler auftritt, der in etwa lautet: "Es ist ein Fehler aufgetreten. Die Datei konnte nicht gefunden werden".
Bei meiner IE-Installation geht das und mit Firefox sowieso. Woran könnte das liegen?
Hier der code
Code: Alles auswählen
<?php
if (isset($HTTP_POST_VARS['id']))
{
$id = intval($HTTP_POST_VARS['id']);
}
elseif (isset($HTTP_GET_VARS['id']))
{
$id = intval($HTTP_GET_VARS['id']);
}
else
{
$link = $sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php");
ob_end_clean();
header("Location: $link");
exit;
}
$sql = "SELECT dirname, filename
FROM ".$cfg["tab"]["upl"]."
WHERE idupl = ".$id;
$db->query($sql);
$db->next_record();
if (!stristr ($db->f("dirname"), "download"))
{
$link = $sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php");
ob_end_clean();
header("Location: $link");
exit;
} else {
$verzeichnis = $db->f("dirname");
$dateiname = $db->f("filename");
}
$suchpfad = '0=' . str_replace("/","%2F",substr($verzeichnis, 0, -1)).'&';
$sql = "SELECT a.public, a.idcat
FROM ".$cfg["tab"]["cat_lang"]." AS a,
".$cfg["tab"]["container_conf"]." AS b,
con_template_conf AS c
WHERE c.idtplcfg = b.idtplcfg AND
c.idtplcfg = a.idtplcfg AND
b.container = '".$suchpfad."'";
$db->query($sql);
if (!$db->next_record())
{
$sql = "SELECT d.public, d.idcat
FROM ".$cfg["tab"]["cat_lang"]." AS d,
".$cfg["tab"]["cat_art"]." AS e,
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["container_conf"]." AS b,
con_template_conf AS c
WHERE c.idtplcfg = b.idtplcfg AND
c.idtplcfg = a.idtplcfg AND
e.idart = a.idart AND
e.idcat = d.idcat AND
b.container = '".$suchpfad."'";
$db->query($sql);
$db->next_record();
}
if ($db->f("public") == 1 || $perm->have_perm_area_action_item("str","front_allow", $db->f("idcat")) ||
$perm->have_perm())
{
if ( $file_extern == "1" )
{
Header("Location: $dateiname");
}
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$dateiname."\"");
readfile($cfgClient[$client]["htmlpath"]["frontend"] . $cfgClient[$client]["upload"] . $verzeichnis . $dateiname);
} else {
$link = $sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?idart=78&idcat=62");
ob_end_clean();
header("Location: $link");
exit;
}
?>