Filme nur für registrierte Mitglieder

tezerling

Grünschnabel
Hallo,

ich konnte über die suche leider nichts zu meinem Problem finden...

Ich versuche hier gerade Filme nur für registrierte Mitglieder anzeigen zu lassen.
Eigentlich nicht das Problem, aber sobald sich ein User einloggt, und einen Film schaut, kann er in den Quelltext schauen und sich den Film nächstes mal direkt anschauen, ohne sich einloggen zu müssen.
Da es sich hier um Ü18-Content handelt, darf der Film natürlich wegen dem Jugendschutz nicht einfach so offen im Netz stehen und ist deshalb per .htaccess geschützt.

Um den Film trotzdem anzeigen zu können, habe ich bis jetzt folgende Methode in der Testphase:

Den Film binde ich nicht direkt in den embed-code ein, sondern gebe dort eine php-seite an:

PHP:
<EMBED width="300 style="width:200px"" height="240" src="moviefiles.php?v=$movie"></EMBED>

In der moviefiles.php steht dann folgender code:

PHP:
<?php
session_start();
if($_SESSION['watch'] == 'true'){
$_SESSION['watch'] = 'false';
header("LOCATION: watchmovie.php?file=".$_GET['v']);
}
?>

Wenn der User eingeloggt ist und den Film schauen darf, setzte ich "$_SESSION['watch'] = 'true'" und leite weiter auf die watchmovie.php, in der dann folgendes steht:

PHP:
<?php
header("Content-Type: video/x-ms-wmv");
header("Content-Length: ".filesize("images/movies/".$_GET['file']));
$f=fopen("images/movies/".$_GET['file'],"r");
while(!feof($f)) {
$buffer = fread($f, 4096);
print $buffer;
}
?>

Diese Methode funktioniert prima auf meinem Mac, auf dem ich das alles geschrieben habe, mit jedem Browser. Nur auf den Windowssystemen kommen Fehlermeldungen, wie z.b. "Quellfilter konnte nicht geladen werden".
Ich bin echt am verzweifeln wieso das nicht auf Windows laufen möchte, kann es daran liegen das ich die Skripte mit dem Mac hochlade?

Was gibt es ansonsten für Möglichkeiten Filme von außen abzusichern, aber dem berechtigtem User den Zugriff zu erlauben?

mfg tezerling
 
Du könntest es folgenermaßen machen:

Apache unterstützt die Direktive FollowSymlinks. Hier kann man ansetzen. Du erstellst ein Verzeichnis, bei dem du in die .htacces schreibst:

Deny from all

In dieses Verzeichnis legst du deine Filme, $whatever ab.

Nun erstellst du ein Script, das bei berechtigtem Zugriff einen Link auf den entsprechenden Ordner/File erstellt, der Link muss dann in einem Verzeichnis liegen, auf das jeder Benutzer Zugriff hat. Den Link könntest du als einmaligen Link anlegen, der gleich nach Verwendung wieder gelöscht wird. Der Dateiname des Links kann z.B. ein MD5-Schlüssel sein.

So ähnlich lösen es z.B. Onlineshops, die Download-Software anbieten.
 
Hi,

vielen Dank für die Antwort, aber wenn ich das richtig verstehe, kann ich damit den Film "nur" zum download anbieten, das möchte ich nicht.

Die Filme sollen nur online angezeigt werden solange man als User eingeloggt ist.

mfg tezerling
 
Den Film online z.B. mit einem Java-Applet zur Verfügung zu stellen ist letztendlich auch nur eine URL, die das Applet abruft. Ob es jetzt zum Download angeboten wird, oder gestreamt ist letzendlich das gleiche.
 
Hallo,

jetzt habe ich mal ein bisschen gegoogelt, und bin immer noch nicht schlauer...

Apache unterstützt die Direktive FollowSymlinks.

Muss ich hierbei mit symbolischen Links arbeiten?
Wenn ja ist folgende Funktion bei mir ausgeschaltet.

PHP:
<?php  symlink("datei.txt", "symlink");  ?>

Und wenn ich das so mache:

PHP:
<EMBED width="300 style="width:200px"" height="240" src="test/test.asf"></EMBED>

bekomme ich einen 403-Fehler.

mfg tezerling
 
Hallo,

bei mir kommt dann folgende Fehlermeldung:

PHP:
Warning: symlink() has been disabled for security reasons in /pfad/mtest.php on line 1

In der .htaccess habe ich nun folgendes stehen:

PHP:
Options +FollowSymlinks
Deny from all

mfg tezerling
 
Das ist schade, wenn symlink() aus Sicherheitsgründen deaktiviert wurde, kann man es nicht auf diese Art und weise machen, die wirklich sehr effektiv und sicher gewesen wäre.

Dann musst du schauen, wie du die Probleme mit deiner Ausgangsversion gelöst bekommst. Wie lauten diese Fehlermeldungen denn genau? Hast du auch schon ins Fehler-Protokoll des Webservers gesehen, um herauszufinden, wo das Problem liegt?
 
Zurück