Tach!
Die Video-Dateien außerhalb des DocRoots zu lagern wär natürlich die geschmeidigste Lösung,
aber das haut angeblich beim Hosting-Paket des Kunden (is bei 1&1) nicht hin.
Dann lass bitte nochmal genau hinschauen, ob man bei der Domainverwaltung nicht doch ein Unterverzeichnis anstatt nur / angeben kann. Bei Paketen mit PHP hat man normalerweise die Möglichkeit, mehrere Domains zu erwerben. Diese muss man sinnvollerweise auf (separate) Unterverzeichnisse zeigen lassen können. Das geht bei 1&1 generell und es würde mich sehr wundern, wenn das in dem Paket nicht ginge.
Die Videos selbst sollen geschützt sein, das Script ist per Login geschützt.
Es geht also darum, dass die Filmchen nur über das Script und nicht per URL aufgerufen werden können (z.B: www.foo.de/videos/001.mp4)
Soweit haben wir das schon verstanden.
Das Script macht im Prinzip das Folgende:
Anzuzeigende Video-Datei wird per GET übergeben (player?v=001)
(User/Passwort, Ablaufdatum, bla.. wird am Anfang in der Klasse abgefackelt, spielt hier keine Rolle)Dann wird das Ding ganz einfach im HTML5-Player angezeigt:
<video>
<source src='videos/<?= $_GET["v"] ?>.mp4' type='video/mp4'>
<source src='videos/<?= $_GET["v"] ?>.ogg' type='video/ogg'>
<source src='videos/<?= $_GET["v"] ?>.webm' type='video/webm'>
</video>
Du sagst also dem Browser, dass er sich die Videos unter den angegebenen URLs abholen soll. Soweit so üblich. Hast du nun auch dafür gesorgt, dass diese Aufrufe nicht direkt auf eine Datei losgehen sondern an ein Script, das nun zum Beispiel per Session-Eintrag feststellt, dass der Zugriff berechtigt ist und nun mit readfile() oder ähnlichem seinerseits auf die Datei zugreift und sie an den Browser durchreicht (und vorher noch passende Content-Type-Header setzt)?
Wenn man es nicht zu kompliziert (mit mod\_rewrite) machen möchte, gibt man dem Browser URLs der Form download.php?v=name
> Hmm, ich kapier nich ganz, was du mit "Video-Auslieferungs-Script" meinst.
Genau das tut nämlich ein Video-Auslieferungs-Script. Es reicht nicht, ein Passwort abzufragen und dann den Browser direkt zugreifen zu lassen, denn direkte Zugriffe sollen ja verhindert werden, was ja auch schon klappt.
Vorgehensweise in Kurzform:
- Nutzer kommt auf Seite und kann ein Video aussuchen.
- über Formular oder Link kommt das Zugangsprüf-Script an die Reihe und fragt nach der Berechtigung.
- Berechtigungsdaten werden ausgewertet und in einer Session ein OK abgelegt.
- Antwortseite enthält den Player oder das HTML5-Video-Element. Die URLs zeigen auf das Download-Script
- Download-Script prüft in der Session die Berechtigung, sendet die Content-Type-Header und reicht das Video durch. Ohne Berechtigung muss es auch ein Video ausgeben, denn das erwartet der Browser üblicherweise, der Inhalt ist aber ein "Nicht berechtigt".
dedlfix.