Hallo,
habe nun selbst eine Lösung gefunden:
Zuerst in admistrator/components/com_content die Datei content.xml erweitern damit unter den Parametern 2 zusätzliche Eingabefelder für Dateiname und Passwort eingegeben werden können (bei mir am Dateiende aber noch vor </params> eingefügt):
Code:
<param name="UploadName" type="text" size="20" default="" label="Upload Dateiname" description="Geben Sie hier den Dateinamen der Datei ein" />
<param name="DownloadCode" type="text" size="20" default="" label="Download-Code" description="Geben Sie hier ein 4-5 stelliger Download-Code ein, nur Großbuchstaben verwenden, keine Zahlen" />
Dann unter components/com_content (Frontend Komponente) in content.php in der Funktion show() (zeile ca. 1550) folgendes einfügen:
Code:
$pass = strval( mosGetParam( $_REQUEST, 'pass', '' ) );
Und am Ende der Funktion ca. Zeile 1770 den Funktionsaufruf ändern:
Code:
$cache->call( 'HTML_content::show', $row, $params, $access, $page, $pass );
In der Datei content.html.php dann in Funktion show() ca. Zeile 433, die Funktionsdeklaration ändern:
Code:
function show( &$row, &$params, &$access, $page=0, $pass='') {
Dann weiter unten nach den Zeilen:
// displays Item Text
echo ampReplace( $row->text );
?>
folgendes Einfügen:
Code:
<br />
<?php
if ( !$pass == '') {
if ($params->get( 'DownloadCode' ) == $pass){
$filename = $params->get( 'UploadName' );
$verz = 'accessanwenderpro/';
$pfad = $_SERVER['DOCUMENT_ROOT'];
$pfad = str_replace('\\','/',$pfad);
$pfad = substr($pfad,0,strrpos($pfad,'/'));
$pfad = $pfad.'/'.$verz;
$filename = stripslashes($filename);
if(!file_exists($pfad.$filename) ){echo '<h3>Datei nicht gefunden</h3>';}
else{
clearstatcache();
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename='.$filename);
readfile($pfad.$filename);
}
}
else
echo '<form name="passform" method="Post"><input type="password" name="pass" size="10"> <input type="submit" value="Anfordern"></form>Falscher Download-Code!';
}
elseif ( $params->get( 'UploadName' ) ) {
echo '<form name="passform" method="Post"><input type="password" name="pass" size="10"> <input type="submit" value="Anfordern"></form>';
}
?>
$verz = 'accessanwenderpro/'; müsst ihr natürlich noch anpassen, das ist bei mir der Ordner wohin ich die Dateien hochlade.
Um sicher zu sein dass nur über dieses Script auf die Downloads zugegriffen wird, sollte das Verzeichnis das ihr dafür verwendet mit htaccess geschützt sein.
So ich hoffe ich hab nichts vergessen.
Und wie immer, ohne Gewähr, und bitte vor der Modifikation Sicherheitskopien anlegen!
Gruß Andreas
Lesezeichen