[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Download von Files mit comunity builder absichern - REDAXO Forum
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/
clinden
Beiträge: 22
Registriert: 22. Nov 2008, 01:03

Download von Files mit comunity builder absichern

17. Feb 2010, 01:15

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.

Benutzeravatar
raybeam
Beiträge: 442
Registriert: 5. Feb 2006, 21:30
Kontaktdaten: Website

17. Feb 2010, 19:12

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

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>
Modulausgabe

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);
?>
Und dann noch das Modul für den zusätzliche Download-Artikel:
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>
Modulausgabe:

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";
 }
?>
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

clinden
Beiträge: 22
Registriert: 22. Nov 2008, 01:03

21. Feb 2010, 19:37

Hmm...

ich bin mir nicht sicher, ob ich bei Strato was ausserhalb von Document Root ablegen kann ... ich versuche mal mein Glück.

Danke erstmal für diese Info - das hört sich nach einem gangbaren Weg an.

Goldacker
Beiträge: 148
Registriert: 1. Jul 2007, 13:27
Wohnort: Hamburg / Berlin / Neubrandenburg
Kontaktdaten: Website

.htaccess zum absichern

22. Feb 2010, 21:00

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
Rechtschreibung wird überschätzt, mehr Zeit für Redaxo!

Redaxo-Entwickler >>> www.Jan-Goldacker.de

clinden
Beiträge: 22
Registriert: 22. Nov 2008, 01:03

28. Feb 2010, 22:51

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.

Goldacker
Beiträge: 148
Registriert: 1. Jul 2007, 13:27
Wohnort: Hamburg / Berlin / Neubrandenburg
Kontaktdaten: Website

Angebot

1. Mär 2010, 11:27

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.
Rechtschreibung wird überschätzt, mehr Zeit für Redaxo!

Redaxo-Entwickler >>> www.Jan-Goldacker.de

Zurück zu „Allgemeines [R4]“