Geschützte Downloadbereiche (upload/myFolder) wie Categorie?

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen » Fr 12. Okt 2007, 15:42

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.
Zuletzt geändert von derSteffen am Sa 13. Okt 2007, 16:47, insgesamt 3-mal geändert.

tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof » Sa 13. Okt 2007, 11:19

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.
Für die Freizeit : www.hobbybrauer.de

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen » Sa 13. Okt 2007, 16:15

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.

Gesperrt