Hallo,
ich möchte gerne einen Ordner erstellen, von dem man keine Files von aussen laden kann, sondern nur dann, wenn man als authentisierter User am System angemeldet ist.
Ich habe bereits den community builder installiert und auch die Seiten soweit abgesichert, daß man die nur sehen kann, wenn man angemeldet ist. Nun möchte ich PDFs bereitstellen, die aber nicht jeder sehen soll. Wie kann ich die nun so absichern, daß die auch nur durch Redaxo heruntergeladen werden können?
ModRewrite habe ich an.
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Hallo,
dann mach ich mal da weiter, wo ich nach deiner Frage bezüglich des Download-Templates aufgehört habe
Wenn die PDF-Files in einem eigenen Ordner ausserhalb des Document-Root und damit auch ausserhalb des Medienpools liegen dürfen, könntest du ein Modul schreiben, welches die Daten dort "abholt". Ich habe damals (Redaxo 3.2) ein Modul geschrieben, dass die Inhalte dieses Verzeichnisses als Links in einem Artikel darstellt:
Moduleingabe
Modulausgabe
Und dann noch das Modul für den zusätzliche Download-Artikel:
Moduleingabe:
Modulausgabe:
Es gibt also zwei Artikel:
1. Der Artikel mit den Links der im Verzeichnis enthaltenen PDF-Dateien mit dem ersten Modul
2. Der Artikel der nach dem Klick auf einen Link den Download "anbietet" - zweites Modul
Der Quelltext ist schon älter und sollte an die aktuellen Redaxo-Gegebenheiten angepasst werden (rex_get() anstatt $_GET etc.)
Gruß
Peter
dann mach ich mal da weiter, wo ich nach deiner Frage bezüglich des Download-Templates aufgehört habe
Wenn die PDF-Files in einem eigenen Ordner ausserhalb des Document-Root und damit auch ausserhalb des Medienpools liegen dürfen, könntest du ein Modul schreiben, welches die Daten dort "abholt". Ich habe damals (Redaxo 3.2) ein Modul geschrieben, dass die Inhalte dieses Verzeichnisses als Links in einem Artikel darstellt:
Moduleingabe
Code: Alles auswählen
<p>Dokument-Verzeichnis:(root-Verzeichnis: <?php echo $_SERVER['DOCUMENT_ROOT'] ?>)</p>
<p><input type="text" size="50" name="VALUE[1]" value="REX_VALUE[1]" /></p>
<p>Artikel über den die PDF-Dateien angezeigt werden: REX_LINK_BUTTON[1]</p>
<p>Es werden nur PDF-Dateien verlinkt. <br />
Aus Sicherheitsgründen dürfen die Dateinamen keine <br />
Leer- oder Sonderzeichen enthalten.</p>
Code: Alles auswählen
<?php
// Alle Dateien eines Verzeichnisses ausserhalb des Document-Roots als
// Link anzeigen. Der Verzeichnispfad wird über REX_VALUE[1] übergeben.
//
// siehe auch PHP-Kochbuch, S. 525
$docDirectory = "REX_VALUE[1]";
if($REX['REDAXO'])echo "<p>Dokument-Verzeichnis: $docDirectory";
$d = opendir($docDirectory) or die($php_errormsg);
while (false !== ($f = readdir($d)))
{
// Nur lesbare PDF-Files ausgeben - keine Verzeichnisse oder sonstige Dateien
if(is_file("$docDirectory/$f") && preg_match('/^[a-zA-Z0-9]+\.(pdf)$/',$f,$matches)&& is_readable($docDirectory.'/'.$f))
{
echo '<p><a href="'.rex_getUrl("REX_LINK_ID[1]", $REX["CUR_CLANG"]).'&document='.$f.'">'.$f.'</a></p>'."\n";
}
}
closedir($d);
?>
Moduleingabe:
Code: Alles auswählen
<p>Download-Verzeichnis: (root-Verzeichnis: <?php echo $_SERVER['DOCUMENT_ROOT'] ?>)<input type="text" size="50" name="VALUE[1]" value="REX_VALUE[1]" /></p>
<p>Dieser Artikel benötigt das pdf-Download-Template</p>
Code: Alles auswählen
<?php
// PDF-Datei aus einem Verzeichnis ausserhalb des Documentroots laden und anzeigen
// Modul-Ausgabe: Der Redaxo-Artikel darf kein normales Template haben, da dieses mit
// in die PDF-Datei geschrieben würde
// siehe auch PHP-Kochbuch, S. 484
$docDirectory = "REX_VALUE[1]";
if(!$REX['REDAXO'])
{
$d = opendir($docDirectory) or die($php_errormsg);
$f = $_GET['document'];
if(preg_match('/^[a-zA-Z0-9]+\.(pdf)$/',$f,$matches) && is_readable($docDirectory.'/'.$f))
{
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header ("Content-Type: application/octet-stream");
header ("Content-Length: " . filesize($docDirectory.'/'.$f));
header ("Content-Disposition: attachment; filename=$f");
readfile($docDirectory."/$f")or die("File not found.");
}
closedir($d);
}
else
{
echo "<p>Dokument-Verzeichnis: $docDirectory";
}
?>
1. Der Artikel mit den Links der im Verzeichnis enthaltenen PDF-Dateien mit dem ersten Modul
2. Der Artikel der nach dem Klick auf einen Link den Download "anbietet" - zweites Modul
Der Quelltext ist schon älter und sollte an die aktuellen Redaxo-Gegebenheiten angepasst werden (rex_get() anstatt $_GET etc.)
Gruß
Peter
-
- Beiträge: 148
- Registriert: 1. Jul 2007, 13:27
- Wohnort: Hamburg / Berlin / Neubrandenburg
- Kontaktdaten: Website
.htaccess zum absichern
es geht auch z.B. im files ordner
ordner im ordner files anlegen, mit .htaccess sperren für den direktzugriff
ein modul/template erstellen und dort dann ein öffnen der Datei + als Download senden basteln - fertig
ordner im ordner files anlegen, mit .htaccess sperren für den direktzugriff
ein modul/template erstellen und dort dann ein öffnen der Datei + als Download senden basteln - fertig
So habe ich das jetzt realisiert. Nun muß ich nur noch eine Möglichkeit basteln, daß jemand über das Backend Files dahin uploaden kann. Oder gibt es eine Möglichkeit über den Medienpool verschiedene Verzeichnisse zu bedienen? Ich habe jetzt unter files/intern die geheimen Sachen abgelegt. Allerdings komme ich da im Moment nur per ftp-upload dran. Das muß natürlich anders werden.
-
- Beiträge: 148
- Registriert: 1. Jul 2007, 13:27
- Wohnort: Hamburg / Berlin / Neubrandenburg
- Kontaktdaten: Website
Angebot
das problem haben einige zurzeit und wird gerade unter
http://forum.redaxo.de/ftopic12904.html? diskutiert. Mal schauen, evtl. gibts da in naher Zukunft was.
http://forum.redaxo.de/ftopic12904.html? diskutiert. Mal schauen, evtl. gibts da in naher Zukunft was.