Heyho!
Ich arbeite gerade an einem script, das mir hilft meine Videos so gut wie möglich zu schützen. Und zwar soll der User nie erfahren, wo das Video liegt, damit er es nicht runterladen und/oder anderen zuschicken kann.
Mein lösungsansatz:
Eine MySQL-Tabelle mit Zuordnung von PHP-Session-ID zur Video-ID der angeforderten Datei.
Wenn der Benutzer z.B. den Link für Video 1 klickt startet dieses script:
Die Klasse Video habe ich mir geschrieben um darüber die Videos zu reservieren und abzufragen, welches Video reserviert wurde.
$video->Reserve($vid, $sid) schreibt also in die MySQL-Tabelle eine Zuordnung der SessionID zur Video-ID.
Die Video-ID wird beim Klicken des Links als vid übergeben.
So und jetzt sieht der Benutzer halt nur die Datei movieplayer.php?sid=sessionid, also genau das was ich haben wollte!
Hier die datei movieplayer.php:
$video->getReserved($sid) gibt jetzt die im oberen script gespeicherte Video-ID zurück, damit movieplayer weiß, welche Datei angefordert wurde.
$video->getVideoInfos($vid) gibt ein array zurück, in dem alle wichtigen Informationen über die Videodatei, die die Video-ID $vid hat, enthalten sind.
Die Zeile $res = $video->clearQueue($_GET["sid"]); löscht jetzt in der MySQL-Tabelle die Zuordnung von der angegebenen SessionID zur Video-ID und durch den header("Location: ")-Befehl wird die angeforderte Datei aufgerufen.
Im Prinzip funktioniert alles, wie ich es haben will, aber irgendwie auch nicht :P
Wenn ich die Zeile $res = $video->clearQueue($_GET["sid"]); raus lasse, funktioniert alles bestens, aber die Verbindung von SessionID und Video-ID besteht noch, also könnte man die Videodatei nochmal angucken, runterladen oder weiter schicken.
Wenn die Zeile allerdings bleibt, löscht sie zwar die Verbindung der beiden IDs, aber dann wird merkwürdiger Weise die Videodatei nicht angezeigt
Zu dem Zeitpunkt, wo die Verbindung gelöscht wird, wird sie ja nicht mehr gebraucht und von daher sollte doch eigentlich alles funktionieren...
Die funktion clearQueue sieht so aus:
Also nichts Weltbewegendes eigentlich...
Hat jemand vielleicht ne Idee woran das liegen könnte? Ich bin am verzweifeln weil ich einfach nicht kapiere wieso das nicht geht...
Vielen Dank im Vorraus,
Gruß Alex
Ich arbeite gerade an einem script, das mir hilft meine Videos so gut wie möglich zu schützen. Und zwar soll der User nie erfahren, wo das Video liegt, damit er es nicht runterladen und/oder anderen zuschicken kann.
Mein lösungsansatz:
Eine MySQL-Tabelle mit Zuordnung von PHP-Session-ID zur Video-ID der angeforderten Datei.
Wenn der Benutzer z.B. den Link für Video 1 klickt startet dieses script:
PHP-Code:
$video = new Video();
$video->Reserve($_GET["vid"], session_id());
echo "<center><embed src=\"movieplayer.php?sid=". session_id() ."\"></center>";
$video->Reserve($vid, $sid) schreibt also in die MySQL-Tabelle eine Zuordnung der SessionID zur Video-ID.
Die Video-ID wird beim Klicken des Links als vid übergeben.
So und jetzt sieht der Benutzer halt nur die Datei movieplayer.php?sid=sessionid, also genau das was ich haben wollte!
Hier die datei movieplayer.php:
PHP-Code:
<?
$video = new Video();
$vid = $video->getReserved($_GET["sid"]);
$videoinfo = $video->getVideoInfo($vid);
$filename = $videoinfo["FILENAME"];
$res = $video->clearQueue($_GET["sid"]);
header("Location: /videos/$filename");
?>
$video->getVideoInfos($vid) gibt ein array zurück, in dem alle wichtigen Informationen über die Videodatei, die die Video-ID $vid hat, enthalten sind.
Die Zeile $res = $video->clearQueue($_GET["sid"]); löscht jetzt in der MySQL-Tabelle die Zuordnung von der angegebenen SessionID zur Video-ID und durch den header("Location: ")-Befehl wird die angeforderte Datei aufgerufen.
Im Prinzip funktioniert alles, wie ich es haben will, aber irgendwie auch nicht :P
Wenn ich die Zeile $res = $video->clearQueue($_GET["sid"]); raus lasse, funktioniert alles bestens, aber die Verbindung von SessionID und Video-ID besteht noch, also könnte man die Videodatei nochmal angucken, runterladen oder weiter schicken.
Wenn die Zeile allerdings bleibt, löscht sie zwar die Verbindung der beiden IDs, aber dann wird merkwürdiger Weise die Videodatei nicht angezeigt
Zu dem Zeitpunkt, wo die Verbindung gelöscht wird, wird sie ja nicht mehr gebraucht und von daher sollte doch eigentlich alles funktionieren...
Die funktion clearQueue sieht so aus:
PHP-Code:
function clearQueue($SessionID){
$this->db->query("DELETE FROM VideoQueue WHERE SessionID = \"$SessionID\"");
}
Hat jemand vielleicht ne Idee woran das liegen könnte? Ich bin am verzweifeln weil ich einfach nicht kapiere wieso das nicht geht...
Vielen Dank im Vorraus,
Gruß Alex
Kommentar