You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Thursday, March 6th 2008, 4:31pm

Sicherer Datei-(Videoabruf) ohne!!! Download

Hallo Leute,

ich hab ein riesen Problem. Ich möchte mehr oder weniger eine Download-Center-Funktionalität (Mit geschützten Datein, einem Login..etc. ) allerdings für das iPhone/iPod touch.
Es sollen konkret Video Dateien übertragen und auf dem iPhone abgespielt werden.

Die übliche Herangehensweise also:
  • Dateien ausserhlab des DocumentRoots,
  • Erzeugung einer Sesseion bei Login,
  • Aufruf der Datei über Parameter in der URL
  • erzeugen des DOWNLOADS mit header()
scheitert an dem Safari.
Grund: der Safari des iPhones/iPods unterstützt keine Downloads.

Wird nun ein Video direkt über eine URL z.B. "http://meinserver/meinvideo.3gp" aufgerufen, so übergibt der Safari nur diese URL an den internen Player.
Soweit so gut, allerdings sind die Videos so nicht geschützt. Will ich jetzt hier .htaccess zum Schutz einsetzen, scheitert dies.
Grund: Der Player müsste sich erneut authentifizieren und das kann er nicht!
(Ich weiß man kann den Login per URL anhängen, das will ich aber aus Sicherheitsgründen nicht!)

Jetzt meine FRAGE:
Kann ich das Download-Center so bauen dass es keinen Download erzeugt sondern eine URL die aber nur innerhalb der Session gültig ist?
Wenn ja, wie?

2

Thursday, March 6th 2008, 8:12pm

erzeugen des DOWNLOADS mit header()
Grund: der Safari des iPhones/iPods unterstützt keine Downloads.

Was genau hast du denn versucht? Du musst doch keinen Download starten.

PHP Quellcode

1
2
3
4
<?php
header('Content-type: bla/3gp');
readfile($file);
...

3

Friday, March 7th 2008, 1:28pm

Also ich habe 2 Varianten versucht.

PHP Quellcode

1
2
3
4
5
6
7
...
//header("Content-Type: video/3gp"); habe ich auch versucht
header("Content-Type: application/octet-stream");
...
header("Content-Disposition: attachment; filename=\"$save_as_name\"");
readfile($filename);
...


und deine Version:

PHP Quellcode

1
2
3
4
...
header("Content-Type: video/3gp");
readfile($filename);
...


Im normalen Browser funktionieren alle, aber leider auf dem iPhone nicht. :(
Offensichtlich übergibt readfile() die Datei ebenfalls direkt an den Browser.

Ist es vielleicht möglich die Datei für den Abruf temporär ins DocumentRoot zu kopieren und danach wieder zu löschen?

4

Sunday, March 9th 2008, 7:51pm

Und dass es dem iphone vielleicht auf die dateiendung ankommt? hast du es mal mit mod_rewrite probiert?
Oder hast du mit einem HTTP Header Check Tool mal alle Optionen angezeigt, die geliefert werden, wenn du die Datei direkt aufrufst?
Vielleicht fehlt etwas. Eine Dateigröße/Length vielleicht.

5

Thursday, March 13th 2008, 1:42pm

Quoted

Und dass es dem iphone vielleicht auf die dateiendung ankommt?
Also das habe ich auch versucht. Auch verschiedene MIME-Types.
Der Safari versucht an den internen Player (sowas wie ein Quicktime-Player) eine URL zu übergeben. Dieser Player selber ruft dann erst die Datei ab.
Aus diesem Grund scheitern offensichtlich alle Versuche eine Datei direkt an den Player zu übergeben.

Ich muss es also hinbekommen dass ich irgendwie eine temporär gültige URL baue, die dem Player übergeben wird.
Dann kann dieser die Datei abrufen. Direkt nach Abruf sollte die URL ungültig werden, damit die Datei danach nicht ohne
erneute Autorisierung (Session) abgerufen werden kann.

Ich weiß nicht ob man sowas mit mod_rewrite machen kann.

6

Thursday, March 13th 2008, 9:19pm

Klar, kannst du solche URLs mit mod_rewrite erzeugen. Die Frage ist nur obs am Dateinamen oder am Header liegt.
Nimm doch mal die Version ohne attachment und gebe sie in bla.php aus... und mod_rewrite dann eine url mit foo.3gp

Similar threads

Social bookmarks