Merkwürdiges Problem beim Weiterleiten auf Videodatei...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Merkwürdiges Problem beim Weiterleiten auf Videodatei...

    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:

    PHP-Code:
    $video = new Video();

            
    $video->Reserve($_GET["vid"], session_id());
            echo 
    "<center><embed src=\"movieplayer.php?sid="session_id() ."\"></center>"
    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:
    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->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:
    PHP-Code:
    function clearQueue($SessionID){
              
    $this->db->query("DELETE FROM VideoQueue WHERE SessionID = \"$SessionID\"");
          } 
    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

  • #2
    Re: Merkwürdiges Problem beim Weiterleiten auf Videodatei...

    Original geschrieben von LogicalLimit
    PHP-Code:
    header("Location: /videos/$filename"); 
    Abgesehen davon, dass dieser Header mal wieder nicht korrekt ist (kein absoluter URL angegeben) - wenn das Video über diese Adresse dann wieder ungeschützt und direkt abrufbar ist, dann hättest du dir den Zirkus auch sparen können - denn damit hat der Nutzer doch wieder eine Adresse vor Augen, die er auch direkt an andere weitergeben kann.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Nein, für den Benutzer steht da nur mediaplayer.php?sid=bla

      Kommentar


      • #4
        Original geschrieben von LogicalLimit
        Nein, für den Benutzer steht da nur mediaplayer.php?sid=bla
        Dann hat dein Script den Location-Header entweder nicht (korrekt) gesendet, oder dein Browser behandelt ihn falsch.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Die movieplay.php wird doch wie oben zu sehen durch embed eingebunden. Ich denke mal kaum, dass der header-befehl den Quelltext der Seite so verändern wird, dass der Pfad zum Video da steht... und ich hoffe das siehst du ein
          Wenn ich die adresse vom movieplayer in die Adresszeile schreibe, ändert sich die Adresse, klar, aber wie gesagt.... wenn! Und das passiert hier eben nicht!
          Nachdem das Video im embed-teil geladen ist, ist auch die Verknüpfung weg, sodass ein Kopieren der movieplayer-adresse in die Adressleiste keinen Sinn macht!

          Gruß, Alex

          Kommentar


          • #6
            Hallo Alex,

            ich denke nicht das du die korrekte verhaltensweise von header(Location:http://) kennst. header(Location ist eine weiterleitung, sprich in der Adresszeile deines Browsers wird dann dieser Pfad aufgerufen.
            Sprich in deinem Falle das Video.


            gruss
            shin y.

            Kommentar


            • #7
              Doch, das weiß ich!
              Aber es funktioniert trotzdem so wie ich das möchte, allerdings nur, wenn ich die Zeile mit dem clearQueue rauslasse!
              Meine Frage ist warum es nicht geht, wenn die Zeile da steht, der Rest ist doch jetzt egal...


              Gruß, Alex

              Kommentar


              • #8
                Re: Merkwürdiges Problem beim Weiterleiten auf Videodatei...

                Original geschrieben von LogicalLimit
                Wenn die Zeile allerdings bleibt, löscht sie zwar die Verbindung der beiden IDs, aber dann wird merkwürdiger Weise die Videodatei nicht angezeigt
                Dann tritt vermutlich irgendwo ein Fehler auf ...

                Aber gerade den bekommst du kaum mit, wenn du das Script über embed einbindest.
                Also entweder mal direkt aufrufen, und schauen was dann für Fehler kommen, oder Fehler mal in Datei loggen lassen (php.ini Einstellungen für's Errorhandling).
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Heyho!
                  Na, jetzt bin ich ja noch mehr verwirrt
                  Habe das Video jetzt mal nicht mit embed eingebunden sondern einfach die Adresse ausgegeben und die dann manuell in die Adressleiste eingetragen.
                  Daraufhin ist der download der Datei gestartet und die Datei war vollkommen Fehlerfrei. Es war die Datei, die ich haben wollte und sie hatte den richtigen Namen...
                  Liegt das vielleicht einfach nur an embed? Aber dann sollte es doch an und für sich auch nicht funktionieren wenn der Queue nicht gelöscht wird...

                  Gruß, Alex

                  Nachtrag:
                  Habe jetzt mal in die funktion getReserved eingebaut, dass gezählt wird, wie oft die Funktion aufgerufen wird.
                  Sie sollte nur ein einziges Mal aufgerufen werden und zwar dann wenn movieplay.php zum ersten Mal gestartet wird.
                  Mein zähler hat allerdings angegeben, dass die Funktion ganze 3 Mal aufgerufen wird
                  Ich habe absolut keine Ahnung warum er das tut! Ich gebe den Quelltext der Seite nicht direkt aus, sondern packe immer erst alles in eine Variable $output die dann ganz zum Schluss per echo $output ausgegeben wird. Könnte das damit was zu tun haben?
                  Zuletzt geändert von LogicalLimit; 10.04.2006, 12:11.

                  Kommentar

                  Lädt...
                  X