Seite 2 von 2

Verfasst: Fr 12. Okt 2007, 15:42
von derSteffen
Also irgendwie habe ich es jetzt hinbekommen

Ich habe jetzt eine .htaccess erstellt und diese in meinem Upload-Ordner gepackt (also in upload/intern/)- mit folgendem Inhalt:

Code: Alles auswählen

<Files *.*>
order allow,deny
deny from all
</Files> 
Diese .htaccess schützt alle Unterordner und Dateien die sich in dem Ordner befinden in der sich diese eine .htaccess befindet.

Ich habe ein Layout erstellt mit folgendem Inhalt:

Code: Alles auswählen

<container id="1" name="Securitymodul" types="" mode="fixed" default="Securitymodul">Securitymodul</container>
Ich habe das Modul "Securitymodul"erstellt und nur $upload_path = 'upload/' angepasst (hier nur upload angeben, den restlichen Pfad zur Datei sucht sich das Modul ) :

Code: Alles auswählen

<?php 
  // hier pfad zum upload folder angeben, damit url kurz gehalten wird 
  // z.b. front_content.php?idartlang=23&filepath=filename.pdf 
  // sucht die datei in upload/securefiles/filename.pdf 
  $upload_path = 'upload/'; 

  $arr_path_parts = array(); 
  
  // wurde eine seite übergeben? 
  if ( isset($_GET["filepath"]) && !empty($_GET["filepath"]) ) { 
    
    $str_filepath = $upload_path . $_GET["filepath"]; 
    
    $arr_path_parts = pathinfo($_GET["filepath"]); 
    
    $str_file = $arr_path_parts['basename']; 
        
    $size = filesize($str_filepath); 

    // erzinge das speichern unter fenster 
    header('Content-type: application/force-download'); 

    // benne downloadnamen 
    header('Content-Disposition: attachment; filename="' . $str_file . '"'); 
    
   header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: " . $size);    
    
   // lese datei ein ... 
    readfile($str_filepath); 
    
  } 

?>
Dann habe ich mein Layout mit dem Modul kombiniert -> sprich, ich habe also ein Template erstellt (heißt "Securitytemplate").

In einer geschützen Kategorie lege ich einen neuen Artikel an und geben diesen das Template "Securitytemplate"

So und nun habe ich stese's tolle Downloadmodul genommen und für mich die Counter-Geschichte mißbraucht (heißt auf deutsch - der Counter funktioniert bei dieser Dowloadgeschichte nicht ).

Also muss man in Modul-Template (jetzt aber das Template wo das Downloadmodul drin ist) nicht die Artikel idart für Downloadzähler angeben sondern die idart des Artikel mit dem Modul "Securitymodul". Man muss hier die idart angeben sonst funktioniert es auch nicht!

So und im Output von stese's Modul habe ich diese Zeile:

Code: Alles auswählen

      $str_file_url = $sess->url("front_content.php?idart=" . $dllist_idart . "&changelang=" . $lang .  "&client=" . $client . "&sse_idupl=" . $dllist_item->get("idupl") );
   }
mit dieser ausgetauscht:

Code: Alles auswählen

$str_file_url = $sess->url("front_content.php?idart=" . $dllist_idart . "&changelang=" . $lang .  "&client=" . $client . "&filepath=" . $dllist_item->get("dirname") . $dllist_item->get("filename") );
   }
Fertig :-)

Was jetzt noch nicht so gefällt ist, das man in der Dateiverwaltung alle Dateien welche unter dem geschützen Ordner liegen (auch wenn Sie in zig Unterordnern erst auftauchen) nicht angezeigt werden! Man kann die Datein zwar bearbeiten, bzw. Ihr Schlüsselwörter zuweisen etc. aber leider nicht betrachten.

Verfasst: Sa 13. Okt 2007, 11:19
von tinof
Hallo,

sorry ich habe keine Zeit mir das Modul von stese anzuschauen, aber zum Prinzip:

Der von dir wie beschrieben angelegte Artikel muss (aus dem Download - Modul heraus) in dieser Weise aufgerufen werden :

Code: Alles auswählen

www.deinedomain.de/front_content.php?idart=xxxx?filepath="pfad_zur_datei"
Damit startet Contenido diesen Artikel, der wiederum den Parameter filepath auswertet und die dort übergebene Datei an den Anwender sendet.

Du mußt also in dem Downloadmodul den code, der dort die Download- Links erzeugt, durch o.g. Link ersetzen.

Zweckmäßigerweise erzeugst du diesen Link über

Code: Alles auswählen

$sess->url("front_content.php?idart=$idart_download&filepath=/"$filepath/"")
(ungetestet !)
wobei $idart_download vorher auf die idart dieses Artikels und $filepath auf den Dateinamen der Download - Datei gesetzt ist.

Edit:
Es müßte in dieses Modul noch eine Prüfung, ob der Nuter auch wirklich angemeldet ist, sonst kann jeder, der die URL erstmal kennt, auch die Datei ziehen.

Verfasst: Sa 13. Okt 2007, 16:15
von derSteffen
Ah tinof - danke erst mal. Ich habe es auch jetzt auch mit dem Modul von stese hinbekommen :-). Ich habe es oben in meinem Thread aktualisiert.