auch ein .htaccess Problem

Also zu meinem Projekt:

Es geht darum, dass User Dateien hochladen können und andere diese anschauen und herunterladen können. Dies geht alles mit einem Login.

Jetzt möchte ich aber, dass man die Dateien nur ansehen kann, wenn man auch eingeloggt ist.

Auf meiner Seite sind bis jetzt nur absolute verlinkungen. Wenn man möchte, kann man die URL kopieren und nach dem Logout in die Adresszeile eingeben und man hat die Datei. Genau das möchte ich nicht!
 
Sowas ähnliches habe ich auch mal realisiert.

Ich habe einfach eine .htaccess in den Upload-Ordner gepackt, die alle Dateien sperrt.
Außerhalb diesen Ordners habe ich ein PHP-Skript gehabt, welches zuerst überprüft, ob der User die Erlaubnis hat zuzugreifen und danach die Datei ausgibt.

Also bei dir fehlt nur die Login-Überprüfung.
 
Bei mir sind jetzt auch alle dateien gesperrt. Und zwar für alles und jeden. Im moment sogar auch für meine eigen domain. Ich möchte aber die ausnahme erzeugen, dass alle dateien für die seite "ausnahme.php" nicht gesperrt sind. Ist das mit .htaccess irgendwie möglich?
 
Wenn du mit PHP intern zugreifst, kannst du die .htaccess ignorieren.

Nur die Datei ausnahme.php darf von außen aufgerufen werden.
 
Du hast z.B. folgende Ordnerstruktur:
Code:
|
--*download.php*
--....
--*downloads*
  |
  --*.htaccess*
  --document.doc
  --internet
  |
  --site.html

Pseudo-Code für die download.php:
PHP:
<?php

if (logged_in() == false)
{
  die ('Access denied!');
}

$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.$_GET['filename'];

if ( file_exists($filename) )
{
  header("Content-type: application/octet-stream");
  header("Content-Length: ".filesize($fileTname));
  header("Content-Disposition: attachment; filename=\"".basename($filename). "\"");
  echo file_get_contents($filename);
}
else
{
  die ('File doesn\'t exist!');
}
?>
Und die .htaccess beinhaltet:
Code:
<Files *>
order allow,deny
deny from all
</Files>

Somit werden alle Dateien von einem externen Zugriff geschützt, allerdings nicht vor einem internen Zugriff durch unser PHP-Skript!
Deshalb können wir die Datei einfach so downloaden.
 
Zuletzt bearbeitet:
Vielen Dank erstmal.
Aber ein download-script habe ich schon. ich möchte, dass die datei angezeigt wird. Und wenn es eine pdf ist, auch in der adobe/pdf aplication.
 
Ja, es passt doch so. Probier's doch erstmal aus.

Wenn du willst, kannst du auch noch den genauen Content-Type mitschicken.
Dann definierst du einfach ein Array und überprüfst die Dateiendung.
PHP:
$contentTypes = array(".docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
$fileEnding = substr($filename, strrpos($filename, "."));
 
Zurück